Linux 核心建構過程的每個步驟會發生什麼?
我已經閱讀了許多關於如何建構自定義核心和使用這些核心啟動 Ubuntu 的教程,並成功地遵循了指南並啟動了自定義核心,但我不了解指南中的每個命令的作用以及實際發生的情況每個命令。
Ubuntu 網站上描述的過程對
fakeroot
,dpkg
,make-kpkg
, 一些 initramfs 和其他有效的東西做了很多工作,但根本無法幫助我理解發生了什麼。
make
linux核心目錄中的輸出是什麼?- 它會創建“壓縮核心映像”嗎?
- “壓縮核心映像”文件的名稱是什麼,它放在哪裡?
- 做什麼
make modules
?- 應該
make modules
在之前還是之後做make
?- 不會
make
自動建構我的模組嗎?- 將新建核心添加到可引導核心列表的過程是什麼(英文,不僅僅是命令列表)?
- 做什麼
make install
?- 將
make install
它添加到我的可啟動核心列表中,這樣我就不必再做任何事情了嗎?- 有沒有等價物
make modules_install
?
從頂部…
make
編譯並連結核心映像。這是一個名為vmlinuz
.make modules``M
為您在核心配置期間回答的每個問題編譯單獨的文件。目標程式碼與您新建構的核心相關聯。(對於已回答的問題Y
,這些已經是 的一部分vmlinuz
,對於已回答的問題,N
它們將被跳過)。make install
將您建構的核心安裝到/vmlinuz
.make modules_install
將您的核心模組安裝到/lib/modules
或/lib/modules/<version>
.至於將其添加到可用核心列表中,則由引導載入程序負責。每個引導載入程序都不同,但
grub
在 x86 和 amd64 上最常見,所以我將對其進行描述。其實很簡單。Grub 查找/
,/boot
並且/lib/modules
對於任何看起來可能是工作核心的東西並添加它。是的,這是一個過於簡單的描述。Ubuntu 文件中那些額外的“可怕的東西”是創建
deb
包的額外東西。當您為自己做更多事情時,最好將其打包。你會及時切換。建構核心和模組是分開的,因為對於需要的人(即核心開發人員)他們經常只對一個模組進行更改。他們可以應用他們的更改、重建和安裝模組。當每天必須完成 20 次時,這可以節省大量時間。它永遠不會被更新為只有一個
make everything
命令。相反,您可以make && make modules && make install && make modules_install
像文件中所說的那樣執行。建構過程有利於核心開發人員,而不是你。這就是它應該的方式。實際上,除了核心開發人員或發行版打包人員之外,幾乎沒有任何人編譯核心的理由。在幾乎任何情況下,您想要的核心功能都已經為您建構好了,並且可以在其中一個預打包的核心中使用。有例外,但現在它們非常罕見。
並不是說我不鼓勵您建構自己的核心,而是實際上鼓勵您這樣做。我認為從頭開始建構你的核心是一個非常寶貴的實踐,可以幫助你了解它是如何工作的。部分原因是,也許有一天你會成為需要的例外。但它也教會了你很多關於核心和引導過程的知識。你會因為做了這件事而成為一個更好的人。