Linux 内核源代码树是什么?它包含什么以及其目的是什么?
我正在尝试构建一个外部模块,我正在使用的教程说要确保内核源代码树可用。
如果可用,我在 Ubuntu 中哪里可以找到它?
这里有一个类似的问题:
但我没有看到我的问题的答案。
如果能澄清这一点就好了。
答案1
源代码树是包含所有内核源代码的目录。您可以构建一个新内核,安装它,然后重新启动计算机以使用重建的内核。除了学习之外,人们还重建内核以选择较少使用的选项,或者添加通常不与 Linux 捆绑在一起的设备驱动程序。
你可能找不到它在Ubuntu,但必须下载源 tar 文件,例如,从kernel.org
. Ubuntu 在很多方面都使用 Debian 软件包,并且后者的网站使您可以更轻松地找到这些软件包。
它们(在任何一种情况下)都包含一个“原始”tar 文件(来自“上游”)和一个“debian”附加组件(脚本和包)。您可以从 Debian 下载这两个文件。如果您正在寻找已安装的内核包的源代码,则可以下载这两个部分。
您还可以安装“linux-source”软件包:Debian 和乌班图提供一些源代码包,这是少数几个之一(快速检查发现只有几十个名称中带有“-source”的软件包,而其他软件包有数以万计)。源包是首选,因为需要许多修复(和自定义),并且源包将这些补丁合并到树中。
直到大约十年前,我还经常构建内核,因为缺乏声音、视频和网络的驱动程序。
答案2
内核开发人员经常谈论“我的树”和“那棵树”,指的是特定的 git 存储库。目录树结构看起来有所不同,具体取决于当前在 git 存储库中签出的分支或标签。 git 中的分支系统可以还被认为是树结构(因此称为“分支”),这是与目录结构完全不同的概念。因此,第一个问题的答案并不像看起来那么简单。根据我的经验,对于某些人来说,术语“内核树”意味着 git 分支的集合及其存在于内核源代码的特定 git 存储库中的内容。他们会说“linux-next”是与主线树不同的树。