GNU GRUB
此條目翻譯品質不佳。 (2023年10月15日) |
GNU GRUB(簡稱「GRUB」)是一個來自GNU項目的啟動引導程序。GRUB是多啟動規範的實現,它允許用戶可以在計算機內同時擁有多個操作系統,並在計算機啟動時選擇希望運行的操作系統。GRUB可用於選擇操作系統分區上的不同內核,也可用於向這些內核傳遞啟動參數。
開發者 | GNU項目 |
---|---|
當前版本 | 2.06(2021年6月8日 | )
源代碼庫 | |
類型 | 多重操作系統啟動管理器 |
許可協議 | GNU通用公共許可證 |
網站 | www.gnu.org/software/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
。
參見
參考資料
- Brady, Pádraig. Details of GRUB on the PC. pixelbeat.org. [2006-11-22]. (原始內容存檔於2006-11-27).
- Okuji, Yoshinori. GNU GRUB. gnu.org. [2007-11-29]. (原始內容存檔於2007-11-26).
外部連結
- GNU GRUB首頁(頁面存檔備份,存於網際網路檔案館)(英文)
- GNU GRUB官方手冊(頁面存檔備份,存於網際網路檔案館)(英文)
- GRUB 2中文指南(頁面存檔備份,存於網際網路檔案館)(繁體中文)