linux内核的源代码并不是存放在某一个单独的文件里,而是以一套完整的源码树形式分布在多个目录与文件中。通常我们所说的内核源代码,指的是整个内核源码目录及其下属的所有子目录和源码文件。

发行版中内核源码的常见位置
在多数linux发行版里,系统自带或手动安装的内核头文件与源码会被放到/usr/src路径下。最常见的源码根目录是/usr/src/linux,它往往是一个符号链接,指向具体版本的内核源码目录,例如/usr/src/linux-5.15.0。你可以使用如下命令查看:
# 查看/usr/src下的内容 ls -l /usr/src # 查看linux链接指向何处 readlink -f /usr/src/linux
从官方获取并放置源码
如果从kernel.org下载了源码压缩包,解压后会产生一个名称为linux-x.y.z的目录。你可以把它放到/usr/src下并创建链接,也可以放在用户主目录中自行阅读。解压命令如下:
# 假设下载的是tar.xz格式 tar -xJf linux-6.1.10.tar.xz mv linux-6.1.10 /usr/src/ ln -s /usr/src/linux-6.1.10 /usr/src/linux
源码树中的主要目录
内核源码树内部按功能划分出很多子目录,下表列出几个关键目录及其作用:
| 目录 | 说明 |
|---|---|
| arch | 与CPU体系结构相关的代码,如x86、arm等 |
| kernel | 内核核心子系统,如进程调度、信号等 |
| mm | 内存管理相关代码 |
| drivers | 设备驱动程序 |
| fs | 文件系统实现 |
| include | 内核头文件 |
如何确认当前运行内核对应的源码
若想确认正在运行的内核版本,并找到匹配的源码目录,可使用uname命令:
# 打印当前内核版本 uname -r
之后在/usr/src中寻找名称包含该版本号的目录即可。如果没有安装对应源码,发行版一般提供linux-source或kernel-devel包供安装。
小结
综上所述,linux内核的源代码放在以linux或linux-版本号命名的目录中,而非单个文件。理解源码目录布局是阅读与编译内核的第一步。