8.4. 編譯新核心

為什麼有些人想要編譯新核心?Debian 的預設核心已經包含了絕大部分設定,所以編譯新核心並不是必需的。然而,基於以下理由,編譯新核心還是很有用的:

8.4.1. 核心映像管理

不要害怕嘗試編譯核心。它很有趣而且很有好處。

為了以 Debian 的方式編譯核心,您需要一些軟體套件:kernel-packagekernel-source-2.4.27 (與此文件寫作時間最接近的版本),fakeroot 以及其它一些您可能已經安裝過的軟體套件 (請參閱 /usr/share/doc/kernel-package/README.gz 以取得完整的列表)。

此方法將從您的核心原始碼建立一個 .deb 檔案,並且,如果您有非標準模組,將同時建立它們的同步相依 .deb 檔案。這是一個管理核心的較好的方法﹔/boot 目錄將保存核心,System.map,以及目前編譯的活動設定檔紀錄。

注意您不需要以 "Debian 方式"編譯核心﹔但我們發現使用軟體套件系統來管理您的核心確實可以更加安全和簡單。事實上,您可以直接從 Linus 那裡而不是 kernel-source-2.4.27 取得核心原始碼,並仍然使用 kernel-package 的編譯方法。

注意您可以找到完整的文件,透過使用 kernel-package 它在 /usr/share/doc/kernel-package裡。本節只包含一個簡單的入門指南。

此後,我們假設您具有操作您機器的權力,可以將核心原始碼解壓縮到您的 home 目錄[7]。我們還假設您的核心版本是 "2.4.27。確定您處於打算解開核心原始碼的目錄,然後使用 tar xjf /usr/src/kernel-source-2.4.27.tar.bz2 解壓縮並進入 kernel-source-2.4.27 剛才建立的目錄。

現在,您可以開始設定您的核心了。如果您已經安裝並正在執行 X11, 請執行 make xconfig﹔否則請執行 make menuconfig (必須已經安裝好 libncurses5-dev)。請花點時間閱讀線上說明並仔細地選擇。如果有任何疑慮,通常把您所不確定的設備驅動程式 (用來管理周邊硬體的軟體,例如以太網路卡、SCSI 控制器等) 一起編譯會比較好一點。注意:對於與特殊硬體無關的其它選項,如果您不了解它們,最好保持預設值。不要忘記選擇 "Kernel module loader" 中的 "Loadable module support" (它們預設並沒有被選擇)。否則,您的 Debian 安裝將會遇到問題。

清除原始碼樹並復原 kernel-package 參數。也就是使用 make-kpkg clean

現在,開始編譯核心:fakeroot make-kpkg --revision=custom.1.0 kernel_image。其中版本號 "1.0" 可以隨便您修改﹔它僅用來追蹤您的核心編譯的版本號。同樣地,您也可以用任何您喜歡的單詞替換 "custom" (例如,您的主機名稱)。編譯核心可能要花費較長的時間,這取決於您的機器的性能。

一旦編譯完成,您就可以像安裝其它軟體套件一樣安裝您的核心。以 root 身份,執行 dpkg -i ../kernel-image-2.4.27-subarchitecture_custom.1.0_arm.deb。其中 subarchitecture 部分是一個可選的子結構, 這取決於您所設置的核心選項。dpkg -i kernel-image... 將安裝核心以及其它的一些支援檔案。例如 System.map 可能會被安裝 (用來輔助除錯核心問題),/boot/config-2.4.27 也將被安裝,它包含了您目前的設定。新的 kernel-image-2.4.27 軟體套件將會自動使用您系統上的 boot-loader 來更新開機區,因此您不必重新執行 boot-loader 即可開機系統。如果您建立了一個模組軟體套件,例如 PCMCIA,您也必須同時安裝該軟體套件。

下面到了重新啟動系統的時刻了﹔請仔細閱讀前述步驟所產生的所有警告資訊,然後執行 shutdown -r now

欲取得關於 kernel-package 的更多資訊,請參閱 /usr/share/doc/kernel-package



[7] 也可以在其他目錄解開核心原始碼並建立自定義核心,但是不需要額外的權限是最簡單的方式。