一、概述
Linux内核庞大,但是这些文件的结构还是有章可循的,分别位于不同的目录下,各个目录功能相对独立。
二、源码结构表
目录名 | 描述 |
arch | 体系结构相关的代码,对于每个架构的CPU,arch目录下有一个对应的子目录,比如arch/arm、arch/i386 |
block | 块设备的通用函数 |
crypto | 常用的加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法 |
drivers | 所有的设备驱动程序,里面每一个子目录对一个一类驱动程序,比如drivers/block为块设备驱动程序,drivers/char为字符串设备驱动程序,drivers/mtd为NorFlash、NandFlash等存储设备的驱动程序 |
fs | Linux支持的文件系统的代码,每个子目录对应一种文件系统,比如fs/jffs2、fs/ext2、fs/ext3 |
include | 内核头文件,有基本头文件(存放在include/linux/目录下)、各种驱动或功能部件的头文件(比如include/media/、/include/mtd、include/net)、各种体系相关的头文件(比如include/asm-arm、include/asm-i386/)。当配置内核后,include/asm/是某个include/asm-xxx/(比如asm-arm)的链接 |
init | 内核的初始化代码(不是系统的引导代码),其中的main.c文件中的start_kernel函数时内核引导后的第一个函数 |
ipc | 进程间通信的代码 |
kernel | 内核管理的核心代码,与处理器相关的代码位于arch/*/kernel/目录下 |
lib | 内核用到的一些库函数代码,比如crc32.c、string.c,与处理器相关的库函数代码位于arch/*/lib目录下 |
mm | 内核管理代码,与处理器相关的内存管理代码位于arch/*/mm |
net | 网络支持代码,每个子目录对应于网络的一个方面 |
security | 安全、密钥相关的代码 |
sound | 音频设备的驱动程序 |
usr | 用来制作一个压缩的cpio归档文件:initrd的镜像,它可以作为内核启动后挂接的第一个文件系统 |
Documentation | 内核文档 |
scripts | 用于配制、编译内核的脚本文件 |
三、源码结构图