新聞中心

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


咨詢
建站咨詢
