GNU GRUB

MBR分區表的硬盤上
GPT分區表的硬盤上
MBR（0扇區）。如果可行（出於向後兼容的原因第一個分區起始於63扇區而非1扇區，但這不是強制的），core.img被寫入介於MBR和第一分區之間的空扇區之中。/boot/grub目錄可以放在單獨的分區中，也可以放在根分區中。
GNU GRand Unified Bootloader（簡稱“GRUB”）是一個來自GNU項目的啟動引導程序。GRUB是多啟動規範的實現，它允許用戶可以在計算機內同時擁有多個操作系統，並在計算機啟動時選擇希望運行的操作系統。GRUB可用於選擇操作系統分區上的不同內核，也可用於向這些內核傳遞啟動參數。
GNU GRUB的前身為Grand Unified Bootloader。它主要用於類Unix系統；同大多Linux發行版一樣，GNU系統也採用GNU GRUB作為它的啟動器。Solaris從10 1/06版開始在x86系統上也採用GNU GRUB作為啟動器。

**特性**
GRUB可動態配置；它在啟動時加載配置信息，並允許在啟動時修改，如選擇不同的內核和initrd。為此目的，GRUB提供了一個簡單的類似Bash的命令行界面，它允許用戶編寫新的啟動順序。
GRUB非常輕便。它支持多種可執行格式；它除了可適用於支持多啟動的操作系統外，還通過鏈式啟動功能支持諸如Windows和OS/2之類的操作系統。GRUB支持大部分的Unix文件系統，也支持Windows適用的FAT和NTFS檔案系統，還支持LBA模式。GRUB允許用戶查看它支持的文件系統裡文件的內容。
GRUB具有多種用戶界面。多數Linux發行版利用GRUB對圖形界面的支持，提供了定製的帶有背景圖案的啟動菜單，有時也支持滑鼠。GRUB可通過GFX支援更美觀的開機畫面和開機選單。通過對GRUB的文字界面的設定，可以通過串口實現遠程終端啟動。
GRUB可以從網絡上下載操作系統鏡像，因此可以支持無盤系統。GRUB支持在啟動操作系統前解壓它的鏡像。
與其它啟動器不同，GRUB可以通過GRUB提示符直接與用戶進行交互。載入操作系統前，在GRUB文本模式屏幕下鍵入c鍵可以進入GRUB命令列。在沒有作業系統或者有作業系統而沒有"menu.lst"（或grub.cfg）配置文件的系統上，同樣可以進入GRUB提示符。通過類似bash的命令，GRUB提示符允許用戶手工啟動任何操作系統。把合適的命令記錄在"menu.lst"（或grub.cfg）文件裡，可以自動啟動一個操作系統。
GRUB擁有豐富的終端命令，在命令列下使用這些命令，用戶可以查看硬碟分區的細節，修改分區設置，臨時重新映射磁盤順序，從任何用戶定義的配置文件啟動，以及查看GRUB所支持的文件系統上的其它啟動器的配置。因此，即便不知道一臺電腦上安裝了什麼，也可以從外部設備啟動一個操作系統。
GRUB採用滾動屏幕選擇想要啟動的操作系統。通過向"menu.lst"（或grub.cfg）文件中添加相關信息，GRUB可以控制150或者更多的啟動選項，在啟動時用方向鍵進行選擇。
通過鏈式啟動，一個啟動器可以啟動另一個啟動器。GRUB通過2到3行的命令就可以從DOS、Windows、Linux、BSD和Solaris系統啟動。
儘管GRUB為類Unix系統進行了編譯和打包，但也有供DOS和Windows使用的變種GRUB4DOS等。GRUB也可以不附帶任何操作系統而作為孤立系統安裝。從CD上啟動時運用GRUB需要1個文件，而從軟盤、硬盤和USB設備上啟動時需要2個文件。這些文件可以在任何支援GRUB的Linux CD上找到，用戶可以很容易的找到它們。
新的GRUB2（GRUB第二版）為GRUB的重寫版本，它是GRUB的大革新。GRUB2對Linux系統做了更多的優化，支援更多的功能，如動態的載入模組（而在之前的GRUB中，新增或刪除模組要重新編譯GRUB）等。GRUB2的版本號為0.98或更高；舊的GRUB的版本號則為0.97或更低，也被稱為“GRUB Legacy”或“GRUB1”等。GRUB2的配置、命令等較GRUB Legacy有一定的不同。

**啟動過程**
計算機啟動後，BIOS將尋找第一個可啟動的設備（通常為硬盤），而後從MBR中載入啟動程序，然後把控制交給這段代碼。MBR位於硬盤的前512字節內。

**GRUB第一版本**
GRUB的步驟1包含在MBR中。由於受MBR的大小限制，步驟一所做的幾乎只是裝載GRUB的下一步驟（存放在硬盤的其它位置）。步驟1既可以直接裝載步驟2，也可以裝載步驟1.5：GRUB的步驟1.5包含在MBR後面的30千字節中。步驟1.5載入步驟2。
當步驟2啟動後，它將呈現一個界面來讓用戶選擇啟動的操作系統。這步通常採用的是圖形菜單的形式，如果圖形方式不可用或者用戶需要更高級的控制，可以使用GRUB的命令行提示，通過它，用戶可以手工指定啟動參數。GRUB還可以設置超時後自動從某一個內核啟動。

**GRUB第二版本**
與GRUB第一版相似的是,boot.img像步驟1一樣在MBR或在啟動分區中，但是，它可以從任何LBA48地址的一個扇區中讀取，它（boot.img）將讀取core.img（產生於diskboot.img）的第一個扇區以用來後面讀取core.img的剩餘部分。core.img正常情況下跟步驟1.5儲存在同一地方並且有著同樣的問題，可是，當他被移動到一個文件系統或一個純粹的分區時會比在步驟1.5移動或刪除引起更少的麻煩。一旦完成讀取，core.img會讀取默認的配置文件和其他需要的模塊。

**當GRUB啟動後**
一旦選擇了啟動選項，GRUB把選擇的內核載入內存並把控制交給內核。在此步驟中，對於Windows之類不支持多啟動標準的操作系統，GRUB也可以通過鏈式啟動把控制傳給其它啟動器。在這種情況下，其它操作系統的啟動程序被GRUB保存了下來；與內核不同，其它操作系統如同直接自MBR啟動。類似Windows的啟動菜單，也許是另一個啟動管理器，它允許在多個不支持多啟動的操作系統中做進一步的選擇。（在已有Windows的系統上面，或者包含多個Windows版本的系統上安裝現代的Linux而不修改原操作系統，即屬於這類情況。）

**安裝**
GRUB的一個重要的特性是安裝它不需依附一個操作系統；但是，這種安裝需要一個Linux/Windows副本。由於單獨工作，GRUB實質上是一個微型系統，通過鏈式啟動的方式，它可以啟動所有安裝的主流操作系統。 
與LILO不同，修改GRUB的配置文件後，不必把GRUB重新安裝到MBR或者某個分區中。
在Linux中，“grub-install”命令是用來把GRUB的步驟1安裝到MBR或者分區中的。GRUB的配置文件、步驟2以及其它文件必須安裝到某個可用的分區中。如果這些文件或者分區不可用，步驟1將把用戶留在命令行界面。
GRUB Legacy的設定檔為/boot/grub/menu.lst或/boot/grub/grub.conf。GRUB 2的設定檔為/boot/grub/grub.conf。
除了硬盤外，GRUB也可安裝到光盤、軟盤和閃存盤等移動介質中，這樣就可以啟動一臺無法從硬盤啟動的系統。

**參見**
- Windows Boot Manager- NTLDR- LILO- UEFI- BIOS

**參考資料**
  dead-url = no -  dead-url = no 

**外部鏈接**
  GNU GRUB首頁date=20081002053517 -  GNU GRUB官方手冊date=20081002052948 -  GRUB 2中文指南date=20100527164615