新聞中心

本節(jié),我們就來看看啟動引導程序加載內核的過程,當然 initramfs 這個虛擬文件系統(tǒng)也是要靠啟動引導程序調用的。在 CentOS 6.x 中,啟動引導程序默認是 GRUB,GRUB 是現在最為流行的啟動引導程序,我們也用 GRUB 來說明啟動引導程序的作用。
早期的 LILO 引導程序已經不是很常見了,GRUB 相比來講有很多優(yōu)勢,主要有:
- 支持更多的文件系統(tǒng)。
- GRUB 的主程序可以直接在文件系統(tǒng)中查找內核文件。
- 在系統(tǒng)啟動時,可以利用 GRUB 的交互界面編輯和修改啟動選項。
- 可以動態(tài)修改 GRUB 的配置文件,這樣在修改配置文件之后不需要重新安裝 GRUB,而只需重新啟動就可以生效。
GRUB加載內核的過程
GRUB 的作用有以下幾個:
- 加載操作系統(tǒng)的內核;
- 擁有一個可以讓用戶選擇的的菜單,來選擇到底啟動哪個系統(tǒng);
- 可以調用其他的啟動引導程序,來實現多系統(tǒng)引導。
按照啟動流程,BIOS 在自檢完成后,會到第一個啟動設備的 MBR 中讀取 GRUB。在 MBR 中用來放置啟動引導程序的空間只有 446 Byte,那么 GRUB 可以放到這里嗎?答案是空間不夠,GRUB 的功能非常強大,MBRM 空間是不夠使用的。那么 Linux 的解決辦法是把 GRUB 的程序分成了三個階段來執(zhí)行。
Stage 1:執(zhí)行GRUB主程序
第一階段是用來執(zhí)行 GRUB 主程序的,這個主程序必須放在啟動區(qū)中(也就是 MBR 或者引導扇區(qū)中)。但是 MBR 太小了,所以只能安裝 GRUB 的最小的主程序,而不能安裝 GRUB 的相關配置文件。這個主程序主要是用來啟動 Stage 1.5 和 Stage 2 的。
Stage 1.5:識別不同的文件系統(tǒng)
Stage 2 比較大,只能放在文件系統(tǒng)中(分區(qū)),但是 Stage 1 不能識別不同的文件系統(tǒng),所以不能直接加載 Stage 2。這時需要先加載 Stage 1.5,由 Stage 1.5 來加載不同文件系統(tǒng)中的 Stage 2。
還有一個問題,難道 Stage 1.5 不是放在文件系統(tǒng)中的嗎?如果是,那么 Stage 1 同樣不能找到 Stage 1.5。其實,Stage 1.5 還真沒有放在文件系統(tǒng)中,而是在安裝 GRUB 時,直接安裝到緊跟 MBR 之后的 32KB 的空間中,這段硬盤空間是空白無用的,而且是沒有文件系統(tǒng)的,所以 Stage 1 可以直接讀取 Stage 1.5。讀取了 Stage 1.5 就能識別不同的文件系統(tǒng),才能加載 Stage 2。
Stage 2:加載GRUB的配置文件
Stage 2 階段主要就是加載 GRUB 的配置文件 /boot/grub/grub.conf,然后根據配置文件中的定義,加載內核和虛擬文件系統(tǒng)。接下來內核就可以接管啟動過程,繼續(xù)自檢與加載硬件模塊了。
新聞標題:Linux啟動引導程序(GRUB)加載內核的過程
網頁網址:http://m.5511xx.com/article/cdjicog.html


咨詢
建站咨詢
