在不同的系統上編譯內核

在不同的系統上編譯內核

我在 Nimbix 工作,可以存取一些非常強大的多核心系統,我打算做一個核心編譯服務。

make -j32該系統最多可以有 128 個內核,在我使用 32 個內核進行的初始測試中,我可以非常快速地編譯 - 這是Linux 4.8.12 的時間:

real    2m16.366s
user    29m18.732s
sys     2m28.616s

在我的 Dell Precision 6500 筆記型電腦上,大約 25 分鐘後它仍然沒有編譯。

我的第一個測試是嘗試為我自己的系統(Arch Linux)建立核心。

我將 bzImage 目錄/lib/modules從遠端系統複製到我的系統。

現在,當我嘗試執行 a 時,mkinitcpio出現錯誤:

==> ERROR: '/lib/modules/4.8.14-2-ck-nehalem' is not a valid kernel module directory

(我從 /proc/config.gz 獲取了基本核心 .config 檔案 - 我有 ck-nehalem 核心版本)

我該如何讓它發揮作用?將模組從另一個系統傳輸到建置 initramfs 映像的系統的一般方法是什麼? initramfs 也可以遠端建置嗎?

稍微切題一下,這樣的核心編譯服務對核心開發人員和修補者有用嗎?使用計算集群的成本約為每小時 3 美元,因此一次編譯最終幾乎不需要任何成本。

答案1

所以我正在回答我自己的問題,以防對其他人有用。

只要你運行,你絕對可以遠端建立一個initramfs

make modules_install

在遠端系統上 - 然而,我永遠無法讓圖像包含我需要的模組 - 特別是 md raido 的東西。 ,我無法建立可以啟動我的系統的 initramfs。但我認為如果你在 mkinitcpio.conf 中明確提及所有模組就可以完成

有些模組(例如 nvidia)也需要執行 dkms 來建置所需的模組。

如果將 /lib/modules/ 中的模組複製到本機系統,則必須重新建立連結buildsource指向包含 Linux 核心原始碼的目錄 - 在遠端建立的連結將無效。

答案2

關於 initramfs 中缺少的 md raid 模組 - 還有一種方法可以打開 initramfs 檔案並添加您需要的任何模組,然後根據原始檔案重新建立新的 initramfs,但這次包括您新增的模組。我在 Fedora 中做過幾次,我相信在 Arch linux 中也可以做到。或者,也許可以透過設定 mkinitcpio.conf 檔案或透過 mkinitcpio 的參數來完成。

拉米·羅森

答案3

您應該在本機編譯核心並將編譯後的核心建置為 .deb/.rpm 套件並在遠端安裝。

相關內容