微吼云上線多路互動直播服務 加速多場景互動直播落地
907
2025-03-31
在剛剛的啟動過程中,我們已經知道啟動引導程序(Boot Loader,也就是 GRUB)會在啟動過程中加載內核,之后內核才能取代 BIOS 接管啟動過程。如果沒有啟動引導程,那么內核是不能被加載的。
本節,我們就來看看啟動引導程序加載內核的過程,當然 initramfs 這個虛擬文件系統也是要靠啟動引導程序調用的。在 CentOS 6.x 中,啟動引導程序默認是 GRUB,GRUB 是現在最為流行的啟動引導程序,我們也用 GRUB 來說明啟動引導程序的作用。
早期的 LILO 引導程序已經不是很常見了,GRUB 相比來講有很多優勢,主要有:
支持更多的文件系統。
GRUB 的主程序可以直接在文件系統中查找內核文件。
在系統啟動時,可以利用 GRUB 的交互界面編輯和修改啟動選項。
可以動態修改 GRUB 的配置文件,這樣在修改配置文件之后不需要重新安裝 GRUB,而只需重新啟動就可以生效。
GRUB加載內核的過程
GRUB 的作用有以下幾個:
加載操作系統的內核;
擁有一個可以讓用戶選擇的的菜單,來選擇到底啟動哪個系統;
可以調用其他的啟動引導程序,來實現多系統引導。
按照啟動流程,BIOS 在自檢完成后,會到第一個啟動設備的 MBR 中讀取 GRUB。在 MBR 中用來放置啟動引導程序的空間只有 446 Byte,那么 GRUB 可以放到這里嗎?答案是空間不夠,GRUB 的功能非常強大,MBRM 空間是不夠使用的。那么 Linux 的解決辦法是把 GRUB 的程序分成了三個階段來執行。
第一階段是用來執行 GRUB 主程序的,這個主程序必須放在啟動區中(也就是 MBR 或者引導扇區中)。但是 MBR 太小了,所以只能安裝 GRUB 的最小的主程序,而不能安裝 GRUB 的相關配置文件。這個主程序主要是用來啟動 Stage 1.5 和 Stage 2 的。
Stage 2 比較大,只能放在文件系統中(分區),但是 Stage 1 不能識別不同的文件系統,所以不能直接加載 Stage 2。這時需要先加載 Stage 1.5,由 Stage 1.5 來加載不同文件系統中的 Stage 2。
還有一個問題,難道 Stage 1.5 不是放在文件系統中的嗎?如果是,那么 Stage 1 同樣不能找到 Stage 1.5。其實,Stage 1.5 還真沒有放在文件系統中,而是在安裝 GRUB 時,直接安裝到緊跟 MBR 之后的 32KB 的空間中,這段硬盤空間是空白無用的,而且是沒有文件系統的,所以 Stage 1 可以直接讀取 Stage 1.5。讀取了 Stage 1.5 就能識別不同的文件系統,才能加載 Stage 2。
Stage 2 階段主要就是加載 GRUB 的配置文件 /boot/grub/grub.conf,然后根據配置文件中的定義,加載內核和虛擬文件系統。接下來內核就可以接管啟動過程,繼續自檢與加載硬件模塊了。
Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。