排除 GRUB 的問題
假若一個系統的 GRUB 設定出現問題(成因包括:不正確地修改 GRUB 設定檔、安裝另一個操作系統、硬件上或 BIOS 內的改動引致設置的排序不相同),導致 GRUB 無法找到它的設定檔,你可能會面對 grub 的開機提示符而無從著手。普遍來說,第一步是要找出 GRUB 設定檔的位置。GRUB 的 find 指令可以為你效努。
grub> find /grub/grub.conf find /grub/grub.conf (hd0,2) (hd1,2)
這裡告訢我們有兩個 /boot 分割區,有可能源自軟件 RAID 或不同操作系統。頭一個位於第一個硬盤的第三個分割區,而另一個位於第二個硬盤的第三個分割區。假若要將第一個項目的 GRUB 設定重新安裝到 MBR:
grub> root (hd0,2) grub> setup (hd0)
如果你安裝了其它 Linux 版本,例如 Ubuntu,它也設只有 menu.lst 檔而沒有 grub.conf,但由於 CentOS 利用連結把 menu.lst 指向 grub.conf,因此在這兩款系統上尋找 menu.lst 亦可行:
grub> find /grub/grub.conf find /grub/grub.conf (hd0,0) grub> find /grub/menu.lst find /grub/menu.lst (hd0,0) (hd0,1)
這裡告訢我們有兩個 /boot 分割區,頭一個位於第一個硬盤的第一個分割區,很可能正是 CentOS,而另一個 Linux 的 /boot 位於第一個硬盤的第二個分割區。
要檢視 grub.conf 及 menu.lst 檔的內容,可使用 GRUB 的 cat 指令:
grub> cat (hd0,0)/grub/grub.conf ... 顯示檔案內容 ... grub> cat (hd0,1)/grub/menu.lst ... 顯示檔案內容 ...
要是首輪嘗試找不到檔案,很可能 /boot 分割區並不存在,而 grub 被安裝在主目錄內。你可試用
grub> find /boot/grub/grub.conf (hd0,0) (hd1,4)
同樣地,這個例子裡有兩個 GRUB 安裝。頭一個在第一個硬盤的第一個分割區,而另一個在第二個硬盤的第五個分割區 —— 亦即首個延伸分割區。
若果要還原第二個項目並將 GRUB 的開機程式安裝在第一個硬盤的 MBR 上:
grub> root (hd1,4) grub> setup (hd0)
要是你不清楚主目錄的位置時,你可以嘗試尋找 /etc 內的一個檔案。譬如:
grub> find /etc/fstab (hd0,1)
由此我們得知 / 位於第一個硬盤的第二個分割區上 —— 採用 SCSI 或 SATA 等於 /dev/sda2,而採用 PATA 等於 /dev/hda2。
GRUB 的指令殼還有很多功能,並且在 GRUB 的 info 檔內有詳情記載,請利用 info grub 來存取它們。
其它 GRUB 文章:
這頁的英文版由 PhilSchaffner 建立及維護。歡迎其他 Wiki 貢獻者作出更正、添加或修改。
Translation of revision 6