linux内核源码目录结构

linux内核源码目录结构如下所示:

linux内核源码目录结构_第1张图片

(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等目录。

 

你可能感兴趣的:(嵌入式Linux)