2009年6月22日 星期一

GRUB

GRUB(GRand Unified Bootloader)是GNU下的FSF組織所推行的一套多重開機管理軟體,其主要特點如下:
  • 支授多樣化的格式
  • 支授不可多重開機的作業系統
  • 可載入多重模組
  • 設定檔較人性化
  • 選單介面
  • 彈性化的指令介面
  • 支援多種檔案系統種類
  • 支授自動解壓縮
  • 可從任何已安裝的設備中讀取檔案
  • 磁碟轉換的獨立性
  • 偵測現有記憶體
  • 支授LBA模式
  • 可透過網路下載作業系統映像檔
  • 支授無磁碟系統
  • 支授遠端終端機模式

  • 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,主要功能如下:
  • 提供選單
  • 讀取設定檔
  • 連接下一個 boot sector

  • 下圖為GRUB與開機順序的關係圖:

    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 作業系統之奧義》.稅知文化

    沒有留言:

    張貼留言