Grub2配置
出自Linux Wiki
GRUB,全稱the GRand Unified Bootloader,是常用的引導程序,一般負責在開機時裝載操作系統內核。GRUB 2是最近流行起來的GRUB新版本。
目錄 |
Grub 2與Grub
Grub 2雖在名稱上是Grub的升級版,但其代碼實際上被完全重寫了。[1],對於最終用戶來講,Grub 2帶來了若干改進,如:
- 自動搜索可用的內核和硬盤中的可用系統。
- 可支持NTFS等更多分區格式。
- 可啟動Windows、Mac OS X等多種系統。
- 更人性化的設計,如鍵入命令時TAB補全很強大,輸出很長時會分頁顯示等。
- 界面的定製更加靈活
從配置的角度,Grub 2主要有以下幾點不同[2] [3]:
- /boot/grub/menu.lst被/boot/grub/grub.cfg所取代
- 主配置文件grub.cfg不能直接被用戶修改,而是由系統自動生成
- 每當安裝內核、更新Grub 2或用戶主動運行grub-mkconfig -o /boot/grub/grub.cfg(曾經是update-grub)後,Grub 2會根據用戶配置文件重新生成grub.cfg。
- 可編輯的Grub 2配置文件主要包括/etc/default/grub、和/etc/grub.d/下的各文件。
- 分區命名方式有變,第一個分區現在是1而不是0,但第一個設備仍然以0開始計數,如(hd0, 1)表示第一塊硬盤上的第一個分區。
使用Grub 2時,不要手動編輯/boot/grub/grub.cfg!否則所做的修改在Grub更新或安裝內核等情況下消失。有些文檔建議先賦予grub.cfg寫權限再編輯之,這是非常不可取的……
安裝
多數系統已經預裝了Grub 2。相比於為系統安裝Grub 2軟件而言,更常見的任務是將在Grub 2安裝到硬盤引導區。(如安裝Windows後Grub 2會被Windows清出硬盤MBR。。。)
Grub 2的工具多是grub-開頭的一系列命令,而將其安裝到硬盤上的命令則是grub-install:
grub-install --root-directory=/ /dev/sda
其中root-directory用於指明存放/boot文件的分區。在用恢復盤啟動時,應先掛載裝有Grub 2的系統,再相應地執行grub-install指令。
/dev/sda表示安裝到sda的MBR。Grub 2亦可安裝到分區的引導扇區,但不建議這麼做(不小心的話會破壞某些類型的分區,如修復被grub覆蓋的ntfs分區引導扇區是挺麻煩的)。
全局配置
影響Grub 2行為的主要配置存放在/etc/default/grub中,可實現修改啟動項、更改分辨率、禁用操作系統探測器等。由於配置文件本身可讀性很好,僅介紹幾個不大直觀的項。完整的參數介紹可以參見[2]或BURG的文檔。
默認啟動項
默認啟動項由/etc/default/grub中的GRUB_DEFAULT設置,其取值有如下幾種:
- 數字 (如GRUB_DEFAULT=0)
- 從0開始的菜單項編號,如果有子菜單,則形如 2>0。
- saved
- 默認啟動最後一次選中的啟動項。使用此選項時,使用grub-set-default可設置默認啟動項,grub-reboot可設置僅影響下次啟動時的默認啟動項。
- 啟動項名稱
- 由於啟動項的序號可能是動態改變的,使用啟動項的名稱設置默認值有時更穩妥,如GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic"
更新配置後,不要忘了運行update-grub命令。
自定義菜單項
菜單項一般是由操作系統探測器(os-prober)自動生成的,但在某些情況下(如硬盤安裝時)也需要手動修改自定義菜單項。
自定義菜單項一般存放在/etc/grub.d/40_custom文件中。
一個簡單的菜單項定義如下[2]:
menuentry "System Rescue CD" { set root=(hd0,8) linux /sysrcd/rescuecd subdir=sysrcd setkmap=us initrd /sysrcd/initram.igz }
其中,第一行set root=對應以前Grub的root命令;linux對應以前的kernel命令;initrd命令功能與Grub 1相同。
又如[4]:
menuentry "Windows XP" { set root=(hd0,3) chainloader (hd0,3)+1 }
此處set root=對應老Grub的rootnoverify。
請再次注意,Grub 2中分區號從1開始,但磁盤號仍然是從0開始的。。(詳情請見Grub磁盤分區表示方法)
更多的例子,可以參考/boot/grub/grub.cfg中自動生成的代碼。
更新配置後,不要忘了運行update-grub命令。
美化
Grub 2支持修改背景、前景顏色或使用圖片做背景,但一般來講配色是一個痛苦的過程……如有美化需求,建議參考文章用BURG美化GRUB。
恢復模式 (Rescue Mode)
如果Grub2啟動失敗,會進入恢復模式,此時,屏幕上會顯示 grub rescue> 字樣。此時無需緊張,只要Grub2還在硬盤上,就可使用該控制台將其啟動[5][4]:
# 在 grub rescue> 环境下输入如下命令, (hdX,Y)为包含Grub2的分区 set prefix=(hdX,Y)/boot/grub insmod (hdX,Y)/boot/grub/normal.mod normal
別忘了把(hdX,Y)換成Grub2所在的分區(具體見Grub磁盤分區表示方法)。執行後應該就能看到啟動菜單了。
常用命令小結
在系統命令行中使用的命令:
# 重新生成配置文件 grub-mkconfig -o /boot/grub/grub.cfg # 将Grub 2安装到硬盘引导扇区 grub-install --root-directory=/ /dev/sda
參考資料
- ↑ GNU GRUB Manual 1.99
- ↑ 2.0 2.1 2.2 Ubuntu Community Documentation: Grub2
- ↑ Lesca is thinking…:一、GRUB, GRUB2: 區別、比較
- ↑ 4.0 4.1 4.2 ArchWiki: GRUB2
- ↑ Ubuntu在rescue模式下啟動並修復