GRUB開機時區分為三個階段:Stage 1、Stage 1.5 和 Stage 2。對照在 Linux 的 /boot/grub 目錄下,可以看到三個由系統所建立的檔案:stage1、e2fs_stage_1_5 及 stage2。
Stage 1
stage1 步驟在 GRUB 中是不可或缺的,主要負責當 BIOS 交接給 GRUB 時,載入存在於各分割區中的開機檔,也就是所謂的開機管理程式,stage1 檔案其實就是 MBR 中的在 bootloader 的備份檔,但仍有些些微的差異。建議若要備份 MBR,仍是使用 “dd” 將 MBR 備分出來比較安全。stage1 在 /boot/brub 中的檔案大小為512Bytes。
Stage 1.5
其作用就像是連接 stage1 到 stage2 的一個通道,裡面唯一存放著的是該系統檔案的格式。當載入到 stage1.5 之後,像是e2fs_stage1_5 (ext2 的檔案系統),就可以認識到 ext 2檔案的系統格式。當 stage1 載入 stage1.5之後,stage1 就可以認識 ext2 並將 stage2 載入。這一連串過程的順序讓 GRUB 在安裝完成後,stage2 可以在被搬移後的情況下,就算不在原本的目錄或檔案系統中,依然可以被安全的找到。
Stage 2
這檔案是 GRUB 的核心程式,能讓使用者以選單方式將作業系統載入、新增參數、修改選項。對 GRUB 來說,stage2 除了不能自己啟動外,剩下的事情幾乎都被 stage2 全包了。Stage2 檔案是放在各分割區的 Boot sector,主要功能如下:
A:將系統分割區指向第一顆硬碟的第三個分割區。
B:準備安裝 GRUB 至 MBR。
C:將 stage1 部份資料安裝至 MBR 的 bootloader 空間。
D:將 stage1.5 的檔案寫入 MBR 後的15個磁區,磁區數目會因檔案系統格式的不同而有差異,因為所對應的 stage1.5 之檔案不同。
E:告知 bootloader,當需要載入 stage2 時,其位置在第一顆硬碟的第三個 partition 的 /boot/grub 目錄下。
F:將 grub.conf 設定檔的位置拉接告知 stage2。
1:BIOS 將控制權交給硬碟的第零軌,MBR。
2:MBR 中的 bootloader 透過原本內建的位址載入 stage1.5。
3:bootloader 透過 stage1.5 內容,將分割區中的 stage2 載入。
4:stage2 此時就可以在檔案系統中將 grub.conf 設定檔載入,讓使用者可以看到選單畫面。
參考書目:邱世華.《Linux 作業系統之奧義》.稅知文化
沒有留言:
張貼留言