Linux-2.6.38.8 移植参考


最近学习Linux有点迷茫,刚学会了字符驱动的编写但是却不知道下一步该干些什么,想学习Linux内核裁剪,但是苦于找不到资料,开发板自带的是Linux3.01,虽然我会编译内核却完全不知道如何去裁剪,配置都是开发板自带的,我想自己学习裁剪一个Linux2.6的内核,因为现在的学习资料大部分都是以2.6的内核为例的,因此为了学习方便,我想移植一个Linux2.6的内核,因此从官网下载了一个Linux2.6.38.8版本的Linux源代码。 

1.进入Linux2.6的源代码根目录。 

Linux源码目录结构详解

Arch

目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。

Copying

目录下是GPL版权申明。对具有GPL版权的源代码改动而形成的程序,或使用GPL工具产生的程序,具有使用GPL发表的义务,如公开源代码。

Credits

目录下是光荣榜。对Linux做出过很大贡献的一些人的信息。

Documentation

目录下是一些文档,没有内核代码,可惜都是English的,是对每个目录作用的具体说明。

Drivers

目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound; block 下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block/genhd.c中的device_setup()。它不仅初始化硬盘,也初始化,因为安装nfs文件系统的时候需要网络其他: 如, Lib放置核心的库代码; Net,核心与网络相关的代码; Ipc,这个目录包含核心的进程间通讯的代码; Fs,所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2。

Fs

目录存放Linux支持的文件系统代码和各种类型的文件操作代码。每一个子目录支持一个文件系统,如ext3文件系统对应的就是ext3子目录。

Include

目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录。

Init

目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。

Ipc

目录包含了核心进程间的通信代码。

Kernel

内核管理的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同时与处理器结构相关代码都放在arch/*/kernel目录下。

Lib

目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。

Maintainers

目录存放了维护人员列表,对当前版本的内核各部分都有谁负责。

Makefile

目录第一个Makefile文件。用来组织内核的各模块,记录了个模块间的相互这间的联系和依托关系,编译时使用;仔细阅读各子目录下的Makefile文件对弄清各个文件这间的联系和依托关系很有帮助。

Mm

目录包含了所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,例如arch/i386/mm/Fault.c 。

Modules

目录存放了已建好的、可动态加载的模块文件目录,是个空目录,用于存放编译时产生的模块目标文件。

Net

目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。

Reporting-bugs

目录里是有关报告Bug 的一些内容

Scripts

目录包含用于配置核心的脚本文件等。

一般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。

  • 1
  • 2
  • 下一页

相关内容