获取源码
可以在Linux Kernel的官网下载 https://www.kernel.org/.
也可以从Github fork一个 git clone https://github.com/torvalds/linux.git
也可以从包管理器里下载,比如Ubuntu下 sudo apt install linux-source-4.4.0, 然后解压缩 ‘/usr/src/linux-source-4.4.0.tar.bz2’
内核源码的结构
Table 1 Directories in the root of the kernel source tree
| Directory | Description |
|---|---|
| Documentataion | 内核源码的相关文档 |
| arch | 跟硬件架构相关的代码 |
| block | 块I/O层代码 |
| certs | …, i don’t know |
| crypto | 加密相关的API |
| drivers | 设备驱动代码 |
| fireware | 设备驱动之上的防火墙代码 |
| fs | 虚拟文件系统(VFS)和各个独立的文件系统 |
| include | 内核代码的头文件 |
| init | 内核启动和初始化代码 |
| ipc | 进程间通信代码 |
| kernel | 核心子系统代码,例如scheduler |
| lib | |
| mm | 内存管理子系统和虚拟内存代码 |
| net | 网络子系统 |
| samples | 示例,示范代码 |
| scripts | 编译内核所用的脚本 |
| security | Linux的安全模块 |
| sound | 声音子系统 |
| tools | Linux开发中的实用工具 |
| usr | 早期用户空间使用的文件系统 |
| virt | 内核虚拟机驱动,该模块使Intel VT-x直接运行虚拟机,无需模拟器或者二进制转换 |
Table 2 Files in the root of the kernel source tree
| File | Description |
|---|---|
| COPYING | 许可证(GNU GPL v2) |
| CREDITS | 开发了很多内核代码的开发人员列表 |
| Kbuild | |
| Kconfig | |
| MAINTAINERS | 维护内核子系统和驱动的人员列表,提交内核变更的方法 |
| Makefile | 编译配置文件 |
| README | 项目说明文档,配置编译内核的方法 |
| REPORTING-BUGS | 提交BUG的注意事项 |
Documentataion 文件夹
| File | Description |
|---|---|
| HOWTO | 许可证(GNU GPL v2) |
| CREDITS | 开发了很多内核代码的开发人员列表 |
| Kbuild | |
| Kconfig | |
| MAINTAINERS | 维护内核子系统和驱动的人员列表,提交内核变更的方法 |
| Makefile | 编译配置文件 |
| README | 项目说明文档,配置编译内核的方法 |
| REPORTING-BUGS | 提交BUG的注意事项 |
参考:
- Understanding the linux kernel 3E
- Linux kernel development 3E
- Advanced programing in the UNIX environment 3E
This work is licensed under a CC A-S 4.0 International License.