Linux-Kernel

編譯核心時節省時間

  • July 3, 2019

我必須展示一個實踐,我必須製作自己的模組,將此模組添加到核心的原始碼並實現系統呼叫。我在 Ubuntu 上使用 3.16 核心,但從原始碼安裝核心大約需要 2 小時。

是否可以從原始碼中刪除核心的某些部分(如不必要的驅動程序等)以節省時間,因為我不會將這個新安裝的核心用於正常使用?如果是,如何?

如評論中所述,您應該使用類似make -j4. 使用等於或略高於您擁有的 CPU 核心數的數字。

製作 localmodconfig

以下說明適用於從上游建構核心。我個人覺得最簡單。我不知道如何獲得應用了 ubuntu 更新檔的樹,準備像這樣建構。

(1) 從理論上講,您在更合理的時間跨度內建構核心進行測試的方式應該是

cp /boot/config-`uname -r` .config

你不需要啟用任何更新的東西,所以 - 唯一的問題是如果他們重命名了東西,這會中斷:

make oldnoconfig

現在禁用所有目前未載入的模組。(確保您已插入所有需要插入的 USB 設備…):

make localmodconfig

它最近對我有用,所以可能有用。上次我嘗試的時候不太好。

我想我把它從大約一小時縮短到十分鐘。即使make localmodconfig它仍在建構大量我不需要的東西。OTOH 實際上找到和禁用這些東西(例如 in make xconfig)也需要一段時間(如果您錯誤地禁用了您確實需要的東西,甚至更長時間)。

我想知道它的存在是值得的,只是不能保證讓你快樂。

(2) 我認為建構對“模組”的每次修改不需要兩個小時。(如果你正在實現一個新的系統呼叫,它實際上需要是一個內置的)。 make只會重新編譯您修改過的文件並將其集成到核心二進製文件中。因此,如果讓 Kconfig 正確太麻煩,那麼最初的兩個小時建構可能還不錯。

如果您使用分發核心原始碼包進行建構,您可能會遇到此問題。(您可以切換到手動建構,或者您可以欺騙發行源包使用ccache)。或者,您的修改可能正在修改許多源文件中不幸包含的標頭檔。

即便如此,如果你想移植到不同的核心版本,製作自定義 Kconfigs 可能會很有用,例如更小的 Kconfigs,做git bisect,測試不同的建構選項等。

引用自:https://unix.stackexchange.com/questions/275727