一、目录结构
Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。
内核源代码下载地址:www.kernel.org

  1. arch目录

arch是architecture的缩写。内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。
| --x86 / 英特尔cpu及与之相兼容体系结构的子目录/
| |--boot /引导程序/
| | |--compressed /内核解压缩/
| |--tools /生成压缩内核映像的程序/
| |--kernel /相关内核特性实现方式,如信号处理、时钟处理/
| |--lib /硬件相关工具函数

  1. block目录

部分块设备驱动程序

  1. crypto目录

加密、压缩、CRC校验算法

  1. documentation

内核的文档

  1. drivers目录

设备驱动程序

  1. fs目录

存放各种文件系统的实现代码。每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs。
| |--devpts / /dev/pts虚拟文件系统/
| |--ext2 /第二扩展文件系统/
| |--fat /MS的fat32文件系统/
| |--isofs /ISO9660光盘cd-rom上的文件系统/

  1. include目录

内核所需要的头文件。与平台无关的头文件在include/linux 子目录下,与平台相关的头文件则放在相应的子目录中。

  1. init目录

内核初始化代码

  1. ipc目录

进程间通信的实现代码

  1. kernel目录

Linux大多数关键的核心功能都是在这个目录实现。(调度程序,进程控制,模块化)

  1. lib目录

库文件代码

  1. mm目录

mm目录中的文件用于实现内存管理中与体系结构无关的部分(与体系结构相关的部分在哪里实现?)

  1. net目录

网络协议的实现代码
| |--802 /802无线通讯协议核心支持代码/
| |--appletalk /与苹果系统连网的协议/
| |--ax25 /AX25无线INTERNET协议/
| |--bridge /桥接设备/
| |--ipv4 /IP协议族V4版32位寻址模式/
| |--ipv6 /IP协议族V6版/

  1. samples

一些内核编程的范例

  1. scripts

配置内核的脚本

  1. security

SElinux的模块

  1. sound

音频设备的驱动程序

  1. usr

cpio命令实现

  1. virt

内核虚拟机