有時Linux啟動後會直接進入GRUB命令行界面(只有“grub>”提示符),此時很多用戶就選擇了重新安裝GRUB甚至重新安裝系統。其實一般而言此故障的原因最常見的有兩個:一是GRUB配置文件中選項設置錯誤;二是GRUB配置文件丟失(還有少數原因,如內核文件或鏡像文件損壞、丟失,/boot目錄誤刪除等),如果是第一種情況,可以首先通過GRUB命令引導系統後修復;若是第二種情況,則要使用Linux救援模式修復了(本文後續有描述)。
首先,我們需要了解GRUB啟動系統的引導過程,grub.conf文件中主要的配置選項如下(注意,GRUB配置文件為/boot/grub/grub.conf, /etc/grub.conf只是此文件的軟鏈接):
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.18-1.2798.fc6.img
其中“title”段指定了GRUB引導的系統;“root”段指定了/boot分區所在的位置;“kernel”段指定了內核文件所在位置,內核加載時權限屬性為只讀(“ro”)以及指定根分區所在位置(root=LABEL=/);initrd指定了鏡像文件所在位置。所以GRUB在引導時順序為首先加載/boot分區,然後依次載入內核與鏡像文件。
案例:“title Fedora Core (2.6.18-1.2798.fc6)”段被誤刪除
此時,系統啟動後會自動進入“GRUB>”命令行,為排除故障我們可以依次做如下操作:
1、查找/boot/grub/grub.conf文件所在分區
GRUB> find /boot/grub/grub.conf
(hd0,0)
2、查看grub.conf文件錯誤
GRUB>cat (hd0,0)/boot/grub/grub.conf
建議系統安裝設置好後,要將grub.conf文件備份,如果有備份文件如grub.conf.bak,則此時可以查看備份文件,與當前文件比較,發現錯誤:
GRUB>cat (hd0,0)/boot/grub/grub.conf.bak
3、確認錯誤後,先通過命令行方式完成GRUB引導,進入系統後再行修復grub.conf文件錯誤:
1)指定/boot分區
root (hd0,0)
2)指定內核加載
kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
3)指定鏡像文件所在位置
initrd /boot/initrd-2.6.18-1.2798.fc6.img
提示:GRUB支持tab鍵命令補全功能
4、從/boot分區啟動
boot (hd0,0)
命令行模式可以在GRUB菜單模式中通過按“c”鍵調用,也可以用於測試新編譯的內核(設置kernel、initrd引導新內核及鏡像文件)。增加對GRUB引導以及Linux系統引導知識的了解將對此類故障排除大有幫助。