實際的核心原始碼在哪裡/哪個?

實際的核心原始碼在哪裡/哪個?

我正在關注學習編譯內核。我用了

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 維基:

原始碼包為您提供編譯或建置所需軟體所需的所有必要文件。

它最簡單的形式由三個文件組成:

  • 上游 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」:以「.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

然後繼續按照說明操作

相關內容