A.2. 建立核心

這個部份的指示適用於建立一個自訂的模組化核心,如要建立一個集成式(monolithic)的核心,請參閱 菴 A.3 節,以取得另一方面關於建立與安裝一個集成式核心的解釋。

注請注意
 

這個例子使用 2.4.20-2.47.1 當作核心的版本(核心版本也許會不同),如要得知核心版本請輸入 uname -r 指令,並以所傳回的核心版本取代 2.4.20-2.47.1。

如要為 x86 的主機架構建立一個自訂的核心,請遵照以下步驟(以 root 身份執行所有步驟):

  1. 開啟一個 shell 提示符號並轉換至 /usr/src/linux-2.4/ 目錄,在此以後的所有指令都必須在這個目錄中執行。

  2. 在狀況明瞭的原始碼目錄樹中開始核心的建立是很重要的,因此建議您先執行 make mrproper 指令以移除散佈在目錄樹中任何之前的建立所遺留下的設定檔案。 假如一個既有的設定檔案存在於 /usr/src/linux-2.4/.config,請在執行這個指令前將之備份到另一個目錄,然後在完成後再將之複製回來。

  3. 建議您使用預設的 Red Hat Linux 核心的設定當作一個起點,請從 /usr/src/linux-2.4/configs/ 目錄複製適用系統架構的設定檔案到 /usr/src/linux-2.4/.config,假如系統中擁有超過 4GB 的記憶體,也請您複製含有關鍵字 bigmem 的檔案。

  4. 下一步便是自訂您的設定,假如可以使用 X 視窗系統,建議您使用 make xconfig 指令來執行 Linux Kernel Configuration

    注請注意
     

    如要使用 make xconfig 指令來啟動圖形化的工具,必須已經安裝提供 wish 指令的 tk 套件。 如需關於安裝 RPM 套件的更多資訊,請參考 菴 V 部

    圖形 A-1. 配置核心組件類別

    圖形 A-1 所示,請以點選的方式選取要設定的類別,每一個類別中尚含有組成元件。 選取元件旁的 y (yes)、m (module) 或 n (no) 來將之編譯到核心、編譯為一個核心模組或是不編譯它。 如要更加了解這些元件,請點選旁邊的 Help 按鈕。

    點選 Main Menu 以回到類別的清單。

    在完成設定後,請點選主要選單視窗中的 Save and Exit 按鈕以建立 /usr/src/linux-2.4/.config 設定檔案,並且離開 Linux Kernel Configuration 程式。

    即使對任何的設定都沒有做變更,在繼續之前務必要執行 make xconfig 指令(或者是用來做核心設定的其中一種方法)。

    其他用作核心設定的方法有:

    • make config — 一個互動式的文字模式程式,元件是以線性的格式呈現,並且一次只能操作一個。 這個方法並不需要 X 視窗系統,而且不允許您改變之前問題的答案。

    • make menuconfig — 一個文字模式且含有選單的程式。 元件是以類別的選單呈現,使用在文字模式的 Red Hat Linux 安裝程式中相同的選取元件方式。 選取對應到要收錄之項目的標記: [*] (嵌入)、[ ] (排除)、<M> (模組) 或 < > (可用的模組)。 這種方式不需要 X 視窗系統。

    • make oldconfig — 這是一個用來設定組態檔案以包含預設設定的非互動式命令稿。 假如系統是使用預設的 Red Hat Linux 核心,這將為適用該主機架構的 Red Hat Linux 所附之核心建立一個設定檔案。 這個方法很適合用來設定核心為已知的運作預設值,然後關閉不用的特色。

    注請注意
     

    如要使用 kmod 與核心模組,請在設定過程中回答 Yeskmod supportmodule version (CONFIG_MODVERSIONS) support

  5. 在建立 /usr/src/linux-2.4/.config 檔案之後,請使用 make dep 指令來正確地設定相依性。

  6. 使用 make clean 指令來準備原始碼目錄以便建立。

  7. 建議您使用一個不同的版本號碼在自訂的核心上,以免既有的核心被覆寫。 這裡描述的方法是用來回復不幸事件的最簡單方式。 至於其他的方法,您可以在以下的網站中: http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html 或在 /usr/src/linux-2.4 目錄下的 Makefile 檔案中找到。

    預設狀況下,/usr/src/linux-2.4/Makefile 附加 custom 在以 EXTRAVERSION 開頭的該行最後面。 藉由附加這個字串將使得系統同時擁有已運作中的舊核心與新的核心(版本 2.4.20-2.47.1custom)。

    假如系統中含有一個以上的自訂核心,最好在後面加上一個日期(或其他的標識符)。

  8. 使用 make bzImage 建立核心。

  9. 建立使用 make modules 所設定的任何模組。

  10. 使用 make modules_install 指令來安裝核心模組(即使並沒有真正建立任何東西),請特別注意指令中的底線符號(_)。 這將會安裝核心模組到 /lib/modules/<KERNELVERSION>/kernel/drivers 目錄中(這裡的 KERNELVERSION 就是 Makefile 中所指定的版本)。 在這個例子中,應該是 /lib/modules/2.4.20-2.47.1custom/kernel/drivers/

  11. 使用 make install 以複製新的核心與相關的檔案到適當的目錄中。

    除了安裝核心檔案到 /boot 目錄,這個指令也執行 /sbin/new-kernel-pkg 命令稿來建立一個新的 initrd 映像檔,並且在開機管理程式的設定檔案中加入一個新的紀錄。

    假如系統有一張 SCSI 控制卡,而且 SCSI 驅動程式已被編譯為一個模組,或者核心已被建立含有 ext3 的模組支援(Red Hat Linux 中的預設值),您便需要這個 initrd 映像檔。

  12. 即使都已經完成 initrd 映像檔與開機管理程式的修改,請再一次確認設定都是正確的,並且記得使用自訂的核心版本(而不是 2.4.20-2.47.1)。 請參考 菴 30.5 節菴 30.6 節 以取得關於確認這些修改的指示。