當編譯自訂核心時可能發生以下四種類型的問題:
config
失敗若 config
失敗,會列出不正確的行號。使用以下訊息為例子,需要與 GENERIC
或 NOTES
比對來確認第 17 行輸入的內容正確:
config: line 17: syntax error
make
失敗若 make
失敗,通常是因為核心設定檔未提供足夠的資訊讓 config
找到問題。請仔細檢查設定檔,若仍不清楚問題,請寄發電子郵件給 FreeBSD general questions mailing list 並附上核心設定檔。
若新核心無法開機或無法辨識裝置並不要恐慌!幸好,FreeBSD 有良好的機制可以從不相容的核心復原。只需要在 FreeBSD 開機載入程式 (Boot loader) 選擇要用來開機的核心便可,當系統開機選單出現時選擇 “Escape to a loader prompt” 選項,並在指令提示後輸入 boot
或替換為任何其他已經知道可以正常開機的核心名稱。kernel.old
使用好的核心開機之後,檢查設定檔並嘗試再編譯一次。/var/log/messages
是有用的資源,它在每次成功開機時會記錄核心訊息。同樣的,dmesg(8) 也會印出自本次開機後的核心訊息。
在排除核心問題時,請確定留有 GENERIC
的複本,或者其他已知可以運作的核心,並使用不同的名稱來確保下次編譯時不會被刪除,這很重要,因此每當新的核心被安裝之後,kernel.old
都會被最後安裝的核心覆寫,有可能會無法開機。盡快,透過重新命名將可運作的核心目錄移動到目前運作的核心目錄:
#
mv /boot/kernel /boot/kernel.bad
#
mv /boot/kernel.good
/boot/kernel
若核心版本與系統工具所編譯的版本不同,例如,有一個核心使用 -CURRENT 的原始碼編譯並安裝在 -RELEASE 的系統上,許多系統狀態指令如 ps(1) 及 vmstat(8) 將會無法運作。要修正此問題,請使用與核心相同版本的原始碼樹 (Source tree) 重新編譯並安裝 World。使用與作業系統其他部份版本不同的核心永遠不會是個好主意。
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。