編輯好核心設定檔之後,再來就是重頭戲嘍!!
現在您可以開始來編譯戰死無數腦細胞所得來的戰利品了,不過在編譯之前,可能還得再奉獻一些腦細胞來注意一些事項 ^_^
不同時期的版本提供了不同的編譯方法,請您務必留心了!!
請先切換身份為 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 的步驟︰
- 安裝核心原始程式碼
- 編輯一個適合您系統的核心設定檔
- 決定編譯核心的方式
- 編譯新的核心並且安裝
- 重新開機測試新的核心
|