Linux内核源代码目录以下:linux
/arch:目录包括了全部和体系结构相关的核心代码。它下面的每个子目录都表明一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机通常都基于此目录。
/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/目录下。
/mm:目录包含了全部独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与具体硬件体系结构相关的内存管理代码位于/arch/*/mm目录下,例如/arch/i386/mm/Fault.c 。
/net:目录里是核心的网络部分代码,实现了各类常见的网络协议,其每一个子目录对应于网络的一个方面。
/scripts:目录包含用于配置核心的脚本文件等
/block:块设备驱动程序I/O调度。
/crypto:经常使用加密和散列算法(如AES,SHA等),还有一些压缩和CRC校验算法。
/security:主要包含SELinux模块。
/sound:ALSA,OSS音频设备的驱动核心代码和经常使用设备驱动。
/usr:实现了用于打包和压缩的cpio等。算法