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


8

我正在按照此步骤学习编译内核。我用了

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

或者,我应该提取压缩包

-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 $ 

Answers:


8

Debian Wiki

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

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

  • .tar.gz结尾 的上游tarball

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

  • 一个压缩包,对上游源进行了任何更改,以及为Debian软件包创建的所有文件。

    • 它具有一个.debian.tar.gz(源格式:3.0)
    • .diff.gz结尾(源格式:1.0)

对于Ubuntu,这是完全相同的,在您的情况下:

  • “ linux-lts-vivid-3.19.0”:实际内核,从上游压缩包“ 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”结尾的上游tarball(请注意,根据我的经验,它并不总是一个“ .tar.gz”文件,它可能位于不同的格式,例如“ .tar.xz”);

运行时apt-get source linux-image-$(uname -r),将使用“ 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
# ...

4

内核树的根是目录linux-lts-vivid-3.19.0

关于其他文件:

在压缩包中,linux-lts-vivid_3.19.0.orig.tar.gz您可以找到上游发布的“香草”内核。在此内核中,Ubuntu开发人员添加了补丁,驱动程序,更改了diff压缩为中收集的内容linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz


4

嗯 运行命令时

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

该命令应自动提取源tarball并将其打补丁以创建一个以您的内核命名的目录。在您的情况下,它看起来像是'linux-lts-vivid-3.19.0'-它在目录列表中。

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

cd linux-lts-vivid-3.19.0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.