現在請從設定核心模組繼續。
7.d. 其他選擇:使用 genkernel
如果您正在讀這個部份,那您應該是選擇使用我們的 genkernel 程序來為您設定核心。
現在您的核心原始碼已經安裝了,我們該使用 genkernel 程序來自動幫您編譯核心。genkernel 是利用類似 Installation CD 的核心設定來進行工作的。這代表著當您使用 genkernel 編譯您的核心,您的系統大致上會在開機時偵測所有的硬體,就和我們的 Installation CD 一樣。因為 genkernel 不需要手動核心設定,所以適合不會編譯核心的使用者。
現在讓我們來看看如何使用 genkernel。首先,安裝 genkernel:
原始碼 16: 安裝 genkernel |
# emerge genkernel
|
接下來,把 Installation CD 上的核心設定複製到 genkernel 找尋預設核心設定的位置:
原始碼 17: 複製 Installation CD 核心設定 |
# zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6
|
現在,編譯您的核心原始碼。如果您是透過 grp 安裝 genkerenl,直接執行 genkernel all。請注意,當 genkernel 正在編譯所有硬體支援時,等待的時間會有點久!接下來,把 Installation CD 上的核心設定複製到 genkernel 找尋預設核心設定的位置:
如果您的開機分割區沒有使用 ext2 或是 ext3 為檔案系統,您將需要使用 genkernel --menuconfig all 手動設定,然後在核心內加入您所使用的檔案系統支援( 不能 編成模組)。EVMS2 或 LVM2 的使用者可能會想要再加上 --evms2 或 --lvm2 參數。
原始碼 18: 執行 genkernel |
# genkernel --udev all
|
當 genkernel 完成的時候,一個核心映像檔,一套模組和一個 initial root disk (initrd)將會被建立。我們將在稍後設定開機程式時使用核心映像檔和 initrd。寫下核心和 initrd 的檔名方便您稍後設定開機程式。initrd 將會在開起到"真正的"系統之前馬上偵測硬體支援(就和 Installation CD 一樣)。
原始碼 19: 查看已建立的核心映像檔名和 initrd |
# ls /boot/kernel* /boot/initrd*
|
如果您想要您的系統更像 Installation CD,在 Gentoo 安裝程序完成之後,您需要 emerge coldplug。initrd 會自動偵測您系統開機所需要的硬體,coldplug 擇會自動偵測所有其他事項。coldplug 在套件 CD 上有提供。
原始碼 20: 安裝和開啟 coldplug |
(在安裝完成之後,GRP 安裝指令中) # emerge -k coldplug # rc-update add coldplug boot |
7.e. 核心模組
設定模組
您將需要將想要開機時自動載入的模組放到 /etc/modules.autoload.d/kernel-2.4 (或是 kernel-2.6)。您也可以加上模組的選項。
要查看所有可用的模組,執行 find 指令。不要忘了將 "<kernel version>"更改為您剛剛編譯的版本:
原始碼 21: 查看所有可用的版本 |
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko'
|
舉例來說,要自動載入 3c59x.o 模組,編輯 kernel-2.4 或是 kernel-2.6:
原始碼 22: 編輯 /etc/modules.autoload.d/kernel-2.4 |
(2.4核心的範例) # nano -w /etc/modules.autoload.d/kernel-2.4 |
原始碼 23: /etc/modules.autoload.d/kernel-2.4 或是 kernel-2.6 |
3c59x |
現在請從 設定您的系統 繼續安裝。
8. 設定您的系統
8.a. 檔案系統資訊
什麼是 fstab?
在 Linux 中,所有在系統中被使用的分割區要被列在 /etc/fstab 之中。在這個檔案之中包含了這些分割區的掛載點(他們在檔案系統中哪裡被存取),他們如何掛載( 一些特別的參數),以及何時掛載(要不要自動掛載,一般使用者可不可以掛載等)。
建立 /etc/fstab
/etc/fstab 使用特別的語法。每一列包含六個欄位,以空格(一個以上)、tab或兩者同時用來分隔。每一個欄位有他自己的定義:
- 第一個欄位設定分割區的位置(裝置的路徑)
- 第二個欄位設定分割區要在哪個掛載點被掛載
- 第三個欄位設定分割區的檔案系統
- 第四個欄位設定 mount 要掛載時所使用的掛載參數。 因為不同的檔案系統有不同的參數,您要去查詢 manpage (man mount) 來取得完 整的參數列表。這些參數之間以逗號分隔。
- 第五個欄位被 dump 用來決定這個分割區需不需要被傾印。一般而言您可以設成 0(零)
- 第六個欄位讓 fsck 決定當系統不正常的關機時,檔案系統檢查的順序。 根目錄要被設成 1 而其他則要設成 2,如果檔案系統不需要被檢查的 話,則設成 0。
Gentoo 提供的預設 /etc/fstab 檔案 不是一個有效的 fstab 檔 ,接下來啟動 nano (或您慣用的編輯器)來建立/etc/fstab:
原始碼 1: 開啟 /etc/fstab |
# nano -w /etc/fstab
|
接著來看看我們如何設定 /boot 分割區。這只是一個範例,所以如果您的系統不需要 /boot 分割區(如:PPC),不要直接複製它。
在我們的 x86 分割範例中 /boot 是位於 /dev/hda1 分割區中,而且使用 ext2 檔案系統。他不應該在開機時自動掛載 (noauto),但是需要被檢查,所以我們應該記下來:
原始碼 2: /etc/fstab 中 /boot 設定範例 |
/dev/hda1 /boot ext2 defaults 1 2 |
如果您不需要自動掛載 /boot 分割區,來增加您的系統安全性,您將需要將 defaults 更換成 noauto。這代表著您將需要在使用時手動掛載。
為了增進效能,大部分使用者都會在要掛載的分割區掛載參數中設定 noatime,因為這會讓系統不更新上次檔案的存取時間(一般來說您並不需要這個功能),因此可以加快速度:
原始碼 3: etc/fstab 中改進過的 /boot 設定範例 |
/dev/hda1 /boot ext2 default,noatime 1 2 |
接下來,我們繼續完成下面這幾行,包括 /boot,/ 還有置換區:
原始碼 4: /etc/fstab 中三行設定 |
/dev/hda1 /boot ext2 default,noatime 1 2 /dev/hda2 none swap sw 0 0 /dev/hda3 / ext3 noatime 0 1 |
最後,您要加入 /proc,tmpfs (必要),以及CD-ROM。如果您還有其他的裝置,也加到檔案中:
原始碼 5: 完整的 /etc/fstab |
/dev/hda1 /boot ext2 defaults,noatime 1 2 /dev/hda2 none swap sw 0 0 /dev/hda3 / ext3 noatime 0 1 none /proc proc defaults 0 0 none /dev/shm tmpfs nodev,nosuid,noexec 0 0 /dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0 |