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

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

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 Wiki :

源包为您提供编译所需的所有必要文件,或者构建所需的软件。

它以最简单的forms包含三个文件:

  • 上游tarball以.tar.gz结尾

  • 以.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”:一个tarball,包含对上游源的任何更改,以及为Debian包创建的所有文件;
  • “linux-lts-vivid_3.19.0-30.34~14.04.1.dsc”:一个descrition文件“.dsc”结尾。 它包含包的名称,包括文件名和内容(在Source:关键字之后);
  • “linux-lts-vivid_3.19.0.orig.tar.gz”:上游tarball以“.tar.gz”结尾(请注意,根据我的经验,它并不总是一个“.tar.gz”文件,它可以稍微不同的格式,例如“.tar.xz”);

运行apt-get source linux-image-$(uname -r) ,上游tarball会自动修补“linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz”中列出的修改。 Linux的LTS-VIVID-3.19.0″ :

 % 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 # ... 

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

嗯。 运行命令时

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

该命令应该自动提取源代码压缩包并对其进行修补,以创建一个在内核之后调用的目录。 在你的情况下,它看起来像’linux-lts-vivid-3.19.0′ – 它在你的目录列表中。

那么,这是源目录,你应该运行:

 cd linux-lts-vivid-3.19.0 

然后继续按照说明操作