編譯核心時節省時間
我必須展示一個實踐,我必須製作自己的模組,將此模組添加到核心的原始碼並實現系統呼叫。我在 Ubuntu 上使用 3.16 核心,但從原始碼安裝核心大約需要 2 小時。
是否可以從原始碼中刪除核心的某些部分(如不必要的驅動程序等)以節省時間,因為我不會將這個新安裝的核心用於正常使用?如果是,如何?
如評論中所述,您應該使用類似
make -j4
. 使用等於或略高於您擁有的 CPU 核心數的數字。製作 localmodconfig
以下說明適用於從上游建構核心。我個人覺得最簡單。我不知道如何獲得應用了 ubuntu 更新檔的樹,準備像這樣建構。
(1) 從理論上講,您在更合理的時間跨度內建構核心進行測試的方式應該是
cp /boot/config-`uname -r` .config
你不需要啟用任何更新的東西,所以 - 唯一的問題是如果他們重命名了東西,這會中斷:
make oldnoconfig
現在禁用所有目前未載入的模組。(確保您已插入所有需要插入的 USB 設備…):
make localmodconfig
它最近對我有用,所以可能有用。上次我嘗試的時候不太好。
我想我把它從大約一小時縮短到十分鐘。即使
make localmodconfig
它仍在建構大量我不需要的東西。OTOH 實際上找到和禁用這些東西(例如 inmake xconfig
)也需要一段時間(如果您錯誤地禁用了您確實需要的東西,甚至更長時間)。我想知道它的存在是值得的,只是不能保證讓你快樂。
(2) 我認為建構對“模組”的每次修改不需要兩個小時。(如果你正在實現一個新的系統呼叫,它實際上需要是一個內置的)。
make
只會重新編譯您修改過的文件並將其集成到核心二進製文件中。因此,如果讓 Kconfig 正確太麻煩,那麼最初的兩個小時建構可能還不錯。如果您使用分發核心原始碼包進行建構,您可能會遇到此問題。(您可以切換到手動建構,或者您可以欺騙發行源包使用
ccache
)。或者,您的修改可能正在修改許多源文件中不幸包含的標頭檔。即便如此,如果你想移植到不同的核心版本,製作自定義 Kconfigs 可能會很有用,例如更小的 Kconfigs,做
git bisect
,測試不同的建構選項等。