前言
在查看Linux源码的时候,发现里面的代码都是按照目录整理好的。所以去查看了一下Linux源码的目录结构,主要转自知乎的一篇文章以及一篇别人的博客
Linux内核源码有几千万行,包含源文件和工程文件有48374个,这里顺便贴一下一个Linux在线源码
下面内核目录以linux-3.14内核作为讲解:
结构分析
| /arch | arch是architecture的缩写。所有与体系结构相关的代码都在这个目录以include/asm-*/目录中。Linux支持的每种体系结构在arch目录下都有对应的目录,又进一步分解为boot,mm,kernel等子目录:
--arm arm及与之相兼容体系结构的子目录
--boot 引导程序,以及在这种硬件平台上启动内核所使用的内存管理程序的实现。
--compressed 内核解压缩
--tools 生成压缩内核映像的程序
--kernel: 存放支持体系结构特有的诸如信号量处理和SMP之类特征的实现。
--lib: 存放体系结构特有的对诸如strlen和memcpy之类的通用函数的实现。
--mm: 存放体系结构特有的内存管理程序的实现。
除了这3个子目录以外,大多数体系结构在必要的情况下还有一个boot子目录,包括了在这种硬件平台上启动内核所使用的内存管理程序的实现。 |
| :--: |:--: | :--: |
| /block | 块设备通用函数 |
| /crypto | 常见的加密算法的C语言实现代码,譬如crc32、md5、sha1等|
| /Documentation | 提供文档帮助。关于内核的一些说明信息,在这个目录下会有帮助手册。 |
| /drivers | 内核中所有设备的驱动程序,其中的每一个子目录对应一种设备驱动 |
| /firmware| 固件代码|
| /fs | Linux支持的文件系统代码,及各种类型的文件的操作代码。每个子目录都代表Linux支持的一种文件系统类型 |
| /include | 内核编译通用的头文件 |
| /init | 内核初始化的核心代码 |
| /ipc | 内核中进程间的通信代码 |
| /kernel | 内核的核心代码,此目录下实现了大多数Linux系统的内核函数。与处理器架构相关的内核代码在/kernel/$ARCH/kernel |
| /lib | 内核共用的函数库,与处理器架构相关的库在/kernel/$ARCH/lib |
| /mm | 内存管理代码,譬如页式存储管理内存的分配和释放等。与具体处理器架构相关的内存管理代码位于/arch/$ARCH/mm目录下 |
| /net | 网络通信相关代码 |
| /samples | 示例代码 |
| /scripts | 用于内核配置的脚本文件,用于实现内核配置的图形界面|
| /security | 安全性相关的代码 |
| /tools | Linux中的常用工具 |
| /usr | 内核启动相关的代码 |
| /virt | 内核虚拟机相关的代码 |