Kernel

如何正確建構最小的 FreeBSD 核心?

  • December 31, 2014

有沒有什麼合適的方法來為 FreeBSD 建構一個最小核心?FreeBSD 手冊缺少這方面的資訊。預設情況下/boot/kernel,目錄的大小相當大 - 大約 450MB。我想最小化核心指紋並刪除所有不必要的核心模組和選項。我應該使用"NO_MODULES"選項/etc/make.conf嗎?還是使用 C 編譯標誌?

您可以採取許多措施來減少/boot/kernel.

可能最好的節省空間是通過設置WITHOUT_KERNEL_SYMBOLS/etc/src.conf如果這個文件不存在,只需創建它),下次你installkernel,調試符號文件將不會安裝。現在刪除它們是安全的,如果您立即需要空間 ( rm /boot/kernel/*.symbols)

有一些make.conf設置可以控制建構哪些模組:

  • NO_MODULES- 完全禁用模組的建構
  • MODULES_OVERRIDE- 指定您要建構的模組
  • WITHOUT_MODULES- 不應該建構的模組列表

NO_MODULES選項可能有點過於嚴厲,因此將其他兩者明智地組合是更好的選擇。如果您確切知道需要哪些模組,您可以簡單地將它們設置在MODULES_OVERRIDE. 請注意,在之後WITHOUT_MODULES進行評估,因此不會建構兩個列表中命名的任何模組。 MODULES_OVERRIDE

如果你真的想抑制所有模組的建構,你可以使用NO_MODULES, 並確保所有需要的驅動程序和模組都靜態編譯到核心中。每個驅動程序的手冊頁都顯示了要添加到核心配置文件中的相應行,因此您應該能夠弄清楚您需要什麼。

如果你仍然覺得空間是個問題,或者你只是想盡可能地精簡核心,你可以編輯你的核心配置來刪除你的機器不支持的任何設備和子系統,或者你確定你不想用。建構系統非常明智,如果您無意中刪除了配置中仍處於活動狀態的模組所需的模組,您將獲得失敗的建構和一條錯誤消息,說明出了什麼問題。

儘管這可能非常乏味,但最好的方法是採取小步驟,一次刪除一兩個東西,並確保生成的配置正確建構和啟動。不過,無論您做什麼,我都強烈建議您製作 的副本/usr/src/sys/<arch>/config/GENERIC,然後編輯該副本。如果你曾經如此糊塗以至於唯一的辦法是從預設配置開始,你會很高興你GENERIC的系統上仍然有這個文件!

為了建構您的自定義核心,您可以在命令行上將配置名稱傳遞為make KERNCONF=MYKERNCONF buildkernel,也可以設置KERNCONF/etc/make.conf. 確保將自定義配置文件放入/usr/src/sys/<arch>/config其中,建構系統將能夠找到它。

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