Linux源文件的组织结构-转
下面详细介绍内核源文件的结构,以内核2.4.x为例。内核源程序的文件按树形结构进行组织,Linux-2.4.x最上层会看到这样一些目录:
(1)arch:arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种被支持的体系结构,如ARMNOMMU/下就是关于ARM的内核代码。
图 Linux源文件的树形目录
(2)include:include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在include/Linux子目录下,与ARM CPU相关的头文件在include/asm-ammommu子目录下。
(3)init:这个目录包含核心的初始化代码(注:不是嵌入式系统的引导代码,而是kernel内核的启动代码),包含malns和versiONs两个文件,这是研究初始化和内核如何工作的起点。
(4)mm:这个目录包括所有独立于CPU体系结构的内存管理代码,如页式存储管理内存的分配和释放等,而和体系结构相关的内存管理代码则位于arch/$(ARCH)/mm/,例如arch/armnoΠunu/mmlfault.c。
(5)kernel:主要的核心代码,此目录下的文件实现了大多数Linux系统的内核函数,其中最重要的文件当属sched.c,和体系结构相关的代码在arch/$(ARCH)Acernel中。
(6)drivers:系统所有的设各驱动程序,每种驱动程序又各占用一个子目录,如block/目录下为块设各驱动程序,比如IDE(ide.c)。如果希望查看所有可能包含文件系统的设备是如何初始化的,可以查看drivers/block/genhd.c中的device setup()。它不仅初始化硬盘,也初始化网络,因为安装此文件系统时需要网络。
(7)其他如lib放置核心的库代码;net放置核心与网络相关的代码;lpc这个目录包含核心的进程间通信的代码;fs为所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2;scnpts目录包含用于配置核心的脚本文件等。