linux内核源码目录结构

2019-07-13 07:02发布

linux内核源码目录结构如下所示: (1)Kbuild Kbuild是Kernel build的意思,就是内核编译的意思,这个文件就是linux内核特有的内核编译体系需要用到的文件。 (2)Makefile 这个是linux内核的总Makefile,整个内核工程是用这个Makefile来管理的。 (3)mk 这个文件是九鼎在移植时自己添加的,不是linux内核本身的东西。九鼎添加这个文件的作用是用这个文件来整个管理kernel目录的配置和编译。 (4)arch arch是architecture的缩写,意思是架构。arch目录下是好多个不同架构的CPU的子目录,例如ARM这种CPU的所有文件都在arch/arm目录下,X86的CPU的所有文件都在arch/x86目录下。 (5)block 英文是块的意思,在linux中block表示块设备(以块(多个字节组成一个整体,类似于扇区)为单位进行访问),例如SD卡、iNand、Nand、硬盘等都是块设备。几乎可以认为块设备就是存储设备。block目录下放的是一些linux存储体系中关于块设备管理的代码。 (6)crypto 英文意思是加密。这个目录下放了一些各种常见的加密算法的C语言代码实现,例如crc32、md5、sha1等。 (7)Documentation 这个目录下放了一些文档。 (8)drivers 驱动目录,里面分门别类地列出了linux内核支持的所有硬件设备的驱动源代码。 (9)firmware 固件。什么叫固件?固件其实就是软件,不过这个软件是固化到IC里面运行的,就像S5PV210里的iROM代码。 (10)fs fs就是file system,文件系统,里面列出了linux支持的各种文件系统的实现。 (11)include 头文件目录,公共的(各种CPU架构共用的)头文件都在这里。各种CPU架构特有的一些头文件在arch/arm/include目录及其子目录下。 (12)init init是初始化的意思,这个目录下的代码就是linux内核启动时初始化内核的代码。 (13)ipc ipc就是inter process communication,进程间通信,里面都是linux支持的IPC的代码实现。 (14)kernel kernel就是内核,就是linux内核,所以这个文件夹下放的就是内核本身需要的一些代码文件。 (15)lib lib是库的意思,这里面都是一些公用的有用的库函数,注意这里的库函数和C语言的库函数是不一样的。在内核编程中是不能用C语言标准库函数,这里的lib目录下的库函数就是用来替代那些标准库函数的。例如在内核中要把字符串转成数字用atoi,但是在内核编程中只能用lib目录下的atoi函数,不能用标准C语言库中的atoi。还比如在内核中要打印信息时不能用printf,而要用printk,这个printk就是我们这个lib目录下的。 (16)mm mm就是memory management,内存管理,linux的内存管理代码都在这里。 (17)net 该目录下是网络相关的代码,例如TCP/IP协议栈等。 (18)scripts 脚本,这个目录下全部是脚本文件,这些脚本文件不是linux内核工作时使用的,而是用来辅助linux内核的配置和编译。这个目录下的脚本不需要详细的分析,只需要通过外围来重点学会配置和编译linux内核即可。 (19)security 安全相关的代码,不需要去管。 (20)sound 音频处理相关的。 (21)tools linux中用到的一些有用工具。 (22)usr 目录下是initramfs相关的,和linux内核的启动有关,暂时可以不管。 (23)virt 内核虚拟机相关的,暂时可以不管。 注:与内核移植紧密的目录是arch和drivers,有点相关的是include、block、mm、net、lib等目录。