kernel-header
顾名思义,分发软件包仅包含构建诸如内核模块之类的软件所需的内核头文件(加上必要的管道)。
除了构建输出外,您不应该期望在内核源目录中找到二进制文件。(如果您自己配置和构建内核,则内核源目录还将包含已编译的对象,模块,已构建的内核本身以及使它工作的其他一些二进制位。)
KConfig
文件是内核配置选项的描述。 (及其依赖性)可用于给定目录/模块。
除此之外,所有(大部分)都是C源代码,头文件和Makefile
s。到处都有一些帮助程序脚本,以及汇编源代码。
标头包(安装的标头)仅包含上述标头的一部分(而不是全部标头-仅包含“导出的”标头)和一些构建基础结构。因此,您所看到的是预期的。头文件包不包含C源代码(某些存根和构建基础结构代码除外)。拥有这种程序包的全部目的是节省空间(和带宽)-整个Linux内核源代码树相当大,如果您不想自己编译内核,则完全没有必要。头文件包是由发行版构建和交付的,仅提供构建模块所需的正确内容,而没有更多内容。(它们当然不包含已编译的内核。)
解决您的评论:标头包不会移到任何地方。它们是为特定版本的内核构建的,打包在特定的目录中,仅此而已。这只是一组文件。(请注意,标头包的版本不一定与当前稳定的内核二进制包的版本相同-标头包是通用的,并且可能落后于您正在运行的实际内核。但是,它们不应该来自内核比当前已安装(或目标)内核更新的版本。)
安装的内核二进制文件通常/boot
与引导加载程序二进制文件和配置文件一起安装在目录中。(有时这是一个独立的文件系统,默认情况下未安装。)文件的确切名称取决于内核和发行版。(引导程序也是如此。)
已安装的内核模块位于以下子目录中:
/lib/modules/`uname -r`/
因此,例如在我的系统上,它们当前处于
/lib/modules/3.1.4-gentoo/
完整的内核源代码:在Ubuntu上,如果您希望完整的内核源代码自己构建内核,则应按照此处的说明进行安装。
您也可以下载从源码包kernel.org
和它解压(做不覆盖安装Ubuntu的文件,如果你使用这个压缩包,让您的个人的东西,并通过RPM单独管理的内容)。
/usr/src/linux
是放置内核源代码的传统场所,但是没有什么可以阻止您将内核源代码放置在其他地方。此路径通常也只是指向目录的符号链接。例如我的机器上有这个:
$ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec 7 17:03 /usr/src/linux -> linux-3.1.4-gentoo
使用符号链接可以简化依赖内核源代码的应用程序的构建。您可以将该路径链接到正在运行的(或目标)内核,以便在树外构建模块时不必指定确切的版本或路径信息。至少有助于一堆基于源的发行版。