目录结构
Linux内核源代码采用树形结构进行组织,非常合理的把功能相关的文件都放在同一个子目录下,使得程序更具可读性。内核源代码下载地址:www.kernel.org。
1.arch目录:arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,有进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。
|--x86/*英特尔CPU及与之相兼容体系结构的子目录*/
||--boot/*引导程序*/
|||--compressed/*内核解压缩*/
||--tools/*生成压缩内核映像的程序*/
||--kernel/*相关内核特性实现方式,如信号处理、时钟处理*/
||--lib/*硬件相关工具函数*/
2.block目录:部分块设备驱动程序。
3.crypto目录:加密、压缩、CRC校验算法。
4.documentation:内核的文档。
5.drivers目录:设备驱动程序。
6.fs目录:存放各种文件系统的实现代码。每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs。
||--devpts/*/dev/pts虚拟文件系统*/
||--ext2/*第二扩展文件系统*/
||--fat/*MS的fat32文件系统*/
||--isofs/*ISO9660光盘cd-rom上的文件系统*/
7.include目录:内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的头文件则放在相应的子目录中。
8.lib目录:库文件代码。
9.mm目录:mm目录中的文件用于实现内存管理中与体系结构无关的部分(与体系结构相关的部分在arch目录)。
10.net子目录:网络协议的实现代码。
||--802/*802无线通讯协议核心支持代码*/
||--appletalk/*与苹果系统联网的协议*/
||--ax25/*AX25无线INTERNET协议*/
||--bridge/*桥接设备*/
||--ipv4/*IP协议族V4版32位寻址模式*/
||--ipv6/*IP协议V6版*/
11.samples:一些内核编程的范例。
12.scripts:配置内核的脚本。
13.security:SElinux的模块。
14.sound:音频设备的驱动程序。
15.usr:cpio命令实现。
16.virt:内核虚拟机。
另外在嵌入式设计中经常用到的目录一般是arch目录和driver目录。