E.2. GRUB

GNU GRand Unified Boot loader (GRUB)是一個能夠在系統開機時選擇安裝系統或載入核心的程式。同時也讓使用者能將參數傳遞給核心。

E.2.1. 基於 BIOS 的 x86 系統上的 GRUB 與開機程序

本段落將討論 GRUB 在啟動一部基於 BIOS 的 x86系統時的特殊功用。欲取得完整開機程序上的相關資訊,請參閱<節 F.2, “開機過程的詳細資訊”>。
GRUB 依下列階段步驟將本身載入記憶體中:
  1. 第 1 階段或是主開機載入程式會藉由 MBR [16]被 BIOS 寫入記憶體中主開機載入程式只使用了 MBR 中 512 byte 的磁碟空間,並且能夠載入開機載入程式的階段 1.5 或階段 2。
    BIOS 無法讀取分割表或檔案系統。它會初始化硬體,讀取 MBR,然後完全地根據開機載入程序的第一階段,來繼續進行開機程序。
  2. 如果有必要,1.5 階段開機管理程式會由 1 階段開機管理程式寫入記憶體中 某些硬體會需要經過緩衝階段到第 2 階段開機管理程式。尤其是當硬碟 /boot/ 分割區大於 1024 磁柱,或當使用 LBA 模式時。您可以在 /boot/ 分割區或者一小部分於 MBR 與一小部份於 /boot/ 分割區。
  3. 第 2 階段或次開機管理程式寫入記憶體 次開機管理程式顯示在 GRUB 目錄與指令環境。這個介面允許使用者選擇要啟動哪個核心或作業系統,將參數傳至核心,或檢查系統參數。
  4. 次開機管理程式會將作業系統或核心以及 /boot/sysroot/ 的內容寫入記憶體。在 GRUB 決定要啟始哪個作業程式或核心後,它會載入並將電腦控制權轉移給作業系統。
用來啟動 Linux 的方式稱為直接載入(direct loading),因為開機載入程式可以直接啟動作業系統。開機載入程式與 kernel 之間並沒有緩衝階段。
其它作業系統的開機程序也許會不同。例如 Microsoft Windows 作業系統以及其它的作業系統使用 連鎖載入 的開機模式。在這種方式下,MBR 指出搭載作業系統分割區的第一扇區,在這個扇區存有啟動作業系統所需的檔案。
GRUB 支援直接以及連鎖載入兩種開機模式,並讓它啟動絕大部分的作業系統。

警告

在安裝過程中,微軟 DOS 與微軟視窗安裝程式會完全覆蓋 MBR,並刪除所有既有的開機管理程式。如果您要建立雙開機系統,建議您先安裝微軟作業系統。


[16] 欲取得更多關於電腦 BIOS 與 MBR 的相關資訊,請參閱〈節 F.2.1.1, “基於 BIOS 的 x86 系統”〉。