我正在按照这个学习编译内核。我用了
apt-get source linux-image-$(uname -r)
下载我正在使用的 Linux 内核的源代码。
运行上述命令后,下载了以下文件(和目录)。
user $ ls -l
total 130972
drwxrwxr-x 27 sps sps 4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r-- 1 sps sps 10980684 Oct 5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r-- 1 sps sps 7396 Oct 5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r-- 1 sps sps 123115155 May 6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $
在同一页中提到:
构建内核非常容易。将您的工作目录更改为内核源代码树的根目录,然后键入以下命令:
但我不确定哪个是“内核源代码树的根”。
它是当前目录(我运行apt-get source ...
的位置以及上面列出的文件所在的位置)吗?
或者,它是目录:
drwxrwxr-x 27 sps sps 4096 Oct 16 03:10 linux-lts-vivid-3.19.0
或者,我应该提取 tarball
-rw-rw-r-- 1 sps sps 123115155 May 6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
输出uname -r
:
user $ uname -r
3.19.0-30-generic
user $
来自Debian 维基:
对于 Ubuntu 来说是完全一样的,在你的情况下:
当你运行
apt-get source linux-image-$(uname -r)
时,上游 tarball 会自动使用“linux-lts-vivid-3.19.0”中的“linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz”中列出的修改进行修补:内核树的根是目录
linux-lts-vivid-3.19.0
。关于其他文件:
在 tarball
linux-lts-vivid_3.19.0.orig.tar.gz
中,您可以找到上游发布的“vanilla”内核;对于这个内核,Ubuntu 开发人员添加了补丁、驱动程序,更改了收集diff
在linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
.嗯。当你运行命令
该命令应自动提取源代码压缩包并修补它们以创建一个以您的内核命名的目录。在您的情况下,它看起来像是“linux-lts-vivid-3.19.0”——它在您的目录列表中。
所以,这是源目录,你应该运行:
然后继续按照说明操作