FreeBSD   編譯核心的方法

.逸晨


編輯好核心設定檔之後,再來就是重頭戲嘍!!
現在您可以開始來編譯戰死無數腦細胞所得來的戰利品了,不過在編譯之前,可能還得再奉獻一些腦細胞來注意一些事項 ^_^

不同時期的版本提供了不同的編譯方法,請您務必留心了!!

請先切換身份為 root
如果您使用的版本是 4.0 (不含) 以前的版本;或者是使用 RELEASE 路線的版本,而且 /usr/src 目錄中只有 sys/ 這個子目錄,那麼您一定得用這種方式來編譯安裝您的核心︰

shell# cd /usr/src/sys/i386/conf
shell# /usr/sbin/config MYKERNEL
shell# cd ../../compile/MYKERNEL
shell# make depend
shell# make
shell# make install
shell# make clean

  • config
    檢查核心設定檔是否有語法上的錯誤,如果沒有就會在 /usr/src/sys/compile 建立 MYKERNEL/ 子目錄,並將所需的原始程式碼覆製到 MYKERNEL/ 此目錄下,準備好提供編譯工作的環境

  • make depend
    檢查所需的檔案是否都存在

  • make
    開始編譯核心。編譯好之後的核心檔名為 kernel,並存放於 /usr/src/sys/compile/MYKERNEL/ 目錄下

  • make install
    安裝編譯好的核心與模組。
    將 /modules 目錄更名為 /modules.old
    將編譯好的模組安裝到 /modules 目錄中
    將 /kernel 核心檔更名為 /kernel.old
    將編譯好的核心檔安裝到 /kernel

  • make clean
    清除 /usr/src/sys/compile/MYKERNEL/ 目錄下的所有檔案
    config 指令所產生的檔案不會清除。
相關 make 的指令可以用  shell# make depend all install clean  來合而為一,這樣就不用待在電腦旁等著下達下一個指令了!!


如果您是 4 字頭的惡魔族 (FreeBSD 4.x),你要用底下的方法來編譯核心︰
shell# cd /usr/src

Ver: 4.2 (不含) 以後的版本
shell# make buildkernel KERNCONF=MYKERNEL
shell# make installkernel KERNCONF=MYKERNEL

Ver: 4.2 (含) 以前的版本
shell# make buildkernel KERNEL=MYKERNEL
shell# make installkernel KERNEL=MYKERNEL

  • make buildkernel KERNCONF=MYKERNEL
    這個指令相等於先做 config 再做 make clean 然後執行 make depend
    沒有問題後就執行 make 來編譯核心與模組

  • make installkernel KERNCONF=MYKERNEL
    這個指令相等於執行 make install 指令
其實這兩個指令就是  make kernel KERNCONF=MYKERNEL  的拆開版。也就是說,如果您直接下達  make kernel KERNCONF=MYKERNEL  指令時,就會自動為您編譯核心與模組,且安裝它們就定位了。
如果您覺得要打這麼長串的指令很麻煩的話,您可以在 /etc/make.conf 檔案中加入 KERNCONF=MYKERNEL 的設定,就可以只下達 make kernel 指令。

如果您管理多部使用相同版本但配備不同的機器,您可以將所有的核心設定檔在執行速度較快的機器上進行編譯,然後再將各機器的核心移過去安裝。您可以同時編譯它們,只要在 /etc/make.conf 中加入如下的設定即可。
# /etc/make.conf file
# --- 省略 ---
KERNCONF=MYKERNEL1 MYKERNEL2 MYKERNEL3 MYKERNEL4
# --- 省略 ---
# 各核心設定檔名稱要以空白間隔開來喲

覺得每次要編譯核心時,明明就沒有更新核心的原始碼,偏偏編譯時模組就要再編一次,實在是很討人厭,尤其是在速度特別慢的機器時,更是有想按下 Ctrl+C 的衝動 @@
其實您可以不用每次都編譯模組的,用這個指令吧︰
 make -DNO_MODULES kernel KERNCONF=MYKERNEL 

您也可以在 /etc/make.conf 檔案中加入如下設定 (二選一)︰
# /etc/make.conf file
# --- 省略 ---
NO_MODULES=true # 編譯 kernel 時不編譯模組
MODULES_WITH_WORLD=true # 只在 buildworld 時才編譯模組
# --- 省略 ---

兩種方法隨您選用哦 ^_^

如果您要將在 A 主機上編譯好的核心覆製到 B 主機上更新現有核心的話,您需執行如下指令︰
 install -c -m 555 -o root -g wheel -fschg /path/kernel /kernel 
-c => 覆製檔案
-m => 檔案權限
-o => 檔案擁有者
-g => 工作群組
-f => 檔案旗號

最後,再一次提醒您 ~ ~
要記得切換到 root 的身份來做這些事喲還有,系統安全等級要設為「0」 喲,不然您一定會吃鱉的 ^_^

最後,讓我們來複習一下編譯 kernel 的步驟︰

  • 安裝核心原始程式碼

  • 編輯一個適合您系統的核心設定檔

  • 決定編譯核心的方式

  • 編譯新的核心並且安裝

  • 重新開機測試新的核心

上一篇返回首頁目錄索引章節目錄回上一頁Page UP下一篇

最佳瀏灠環境︰Mozilla & 1024x768