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

sps*_*sps 8 apt kernel source-code

我正在关注这个来学习编译内核。我用了

apt-get source linux-image-$(uname -r)
Run Code Online (Sandbox Code Playgroud)

下载我目前正在使用的 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 $ 
Run Code Online (Sandbox Code Playgroud)

同一页面中提到:

构建内核非常简单。将您的工作目录更改为内核源代码树的根目录,然后键入以下命令:

但我不确定哪个是“内核源代码树的根”。

它是当前目录(我运行的位置apt-get source ...以及上面列出的文件的位置)?

或者,是目录:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
Run Code Online (Sandbox Code Playgroud)

或者,我应该提取 tarball

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
Run Code Online (Sandbox Code Playgroud)

输出uname -r

user $ uname -r
3.19.0-30-generic
user $ 
Run Code Online (Sandbox Code Playgroud)

kos*_*kos 8

来自Debian 维基

源代码包为您提供编译或以其他方式构建所需软件的所有必要文件。

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

  • .tar.gz结尾 的上游 tarball

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

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

    • 这有一个.debian.tar.gz(源格式: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”:一个压缩包,包含对上游源代码所做的任何更改,以及为 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”结尾的上游压缩包(请注意,根据我的经验,它并不总是一个“.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
# ...
Run Code Online (Sandbox Code Playgroud)