实际的内核源在哪里/哪个是?

实际的内核源在哪里/哪个是?

我正在关注学习编译内核。我使用

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 $ 

答案1

来自Debian 维基

源码包为您提供编译或构建所需软件所需的所有文件。

其最简单的形式由三个文件组成:

  • 上游源码包包含压缩文件结尾

  • 以 .dsc 结尾的描述文件。它包含包的名称,既包含在文件名中,也包含在内容中(在 Source: 关键字之后)。

  • 一个 tarball,包含对上游源所做的任何更改,以及为 Debian 包创建的所有文件。

    • 这有一个压缩包(源格式:3.0)
    • .diff.gz结尾(源格式:1.0)

对于 Ubuntu 来说,情况非常相似,就你的情况而言:

  • “linux-lts-vivid-3.19.0”:实际内核,从上游 tarball“linux-lts-vivid_3.19.0.orig.tar.gz”开始修补,并使用“linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz”中列出的修改;
  • “linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz”:一个 tarball,包含对上游源所做的任何更改,以及为 Debian 包创建的所有文件;
  • “linux-lts-vivid_3.19.0-30.34~14.04.1.dsc”:以“.dsc”结尾的描述文件。它包含软件包的名称,既包括文件名,也包括内容(在 Source: 关键字之后);
  • “linux-lts-vivid_3.19.0.orig.tar.gz”:以“.tar.gz”结尾的上游 tarball(请注意,根据我的经验,它并不总是“.tar.gz”文件,它可以是略有不同的格式,例如“.tar.xz”);

当你运行 时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”列出的修改进行修补:

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...

答案2

内核树的根是目录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

答案3

嗯。当你运行命令时

apt-get source linux-image-`uname -r`

该命令应该自动地提取源 tarball 并对其进行修补以创建以您的内核命名的目录。 在您的例子中,它看起来像是名为“linux-lts-vivid-3.19.0” - 它在您的目录列表中。

因此,这是源目录,您应该运行:

cd linux-lts-vivid-3.19.0

然后继续按照说明进行操作

相关内容