
我正在關注這學習編譯內核。我用了
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
然後繼續按照說明操作