
我在 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/ 中的模組複製到本機系統,則必須重新建立連結build
並source
指向包含 Linux 核心原始碼的目錄 - 在遠端建立的連結將無效。
答案2
關於 initramfs 中缺少的 md raid 模組 - 還有一種方法可以打開 initramfs 檔案並添加您需要的任何模組,然後根據原始檔案重新建立新的 initramfs,但這次包括您新增的模組。我在 Fedora 中做過幾次,我相信在 Arch linux 中也可以做到。或者,也許可以透過設定 mkinitcpio.conf 檔案或透過 mkinitcpio 的參數來完成。
拉米·羅森
答案3
您應該在本機編譯核心並將編譯後的核心建置為 .deb/.rpm 套件並在遠端安裝。