GRUB引導故障排除 轉)

2021-05-14 09:24:52 字數 2816 閱讀 3555

grub引導故障排除

在工作和教學中,經常發現同事和同學在碰到linux啟動直接進入grub介面但沒有啟動選單(只剩下乙個「grub>」提示符)的狀況,這時就認定系統已經沒救,開始重新安裝,甚至包括一些接觸linux已久的人也是如此。其實出現此種狀況,只要了解linux系統引導過程中grub的作用以及工作流程,就非常容易解決。

linux系統在啟動過程中,首先是韌體(pc上大多是cmos/bios)的物理檢測,諸如檢測系統的顯示卡、cpu和硬碟等,可從系統按下電源後看到此檢測資訊;檢測無問題,將讀取硬碟的mbr(主引導記錄)中的自舉程式,linux中常用的自舉程式如lilo和grub。自舉程式grub在系統啟動期間只有乙個作用,就是載入核心;核心在引導期間有兩個主要的作用,乙個是驅動系統硬體,另乙個將啟動系統程序init;init程序將讀取其配置檔案/etc/inittab完成後續所有的引導。

所以其實grub在引導期間只有乙個最重要的作用,就是載入系統核心。那麼grub在引導期間到底是如何執行引導的呢?讓我們來看以下的grub配置檔案/boot/grub/grub.conf(一定要注意/etc/grub.conf只是此檔案的乙個軟鏈結)片斷示例:

title thiz linux server 7.0

root (hd0,5)

kernel /boot/vmlinuz-2.4.22-3thiz ro root=label=/

initrd /boot/initrd-2.4.22-3thiz.img

此段是載入grub的最重要的設定段,其中「title」段指定了grub引導介面系統的標題;「root」段指定了/boot分割槽所在的位置;「kernel」段指定了核心所在位置(kernel /boot/vmlinuz-2.4.22-3),核心載入時許可權屬性為唯讀(「ro」),以及指定根分割槽所在位置(root=label=/);initrd指定了linux映象檔案所在位置。

當linux系統中grub配置檔案/boot/grub/grub.conf內容修改錯誤或損壞時,系統啟動後會自動進入grub命令列模式(「grub>」),最常見的原因無外乎兩個,一是grub配置檔案中此三段修改錯誤;二是grub配置檔案丟失。(還有少數原因,如核心檔案或映象檔案損壞、丟失,/boot目錄誤刪除等)此時可以使用如下幾種方法進行恢復。

存在grub配置檔案備份

如果存在grub配置檔案備份,那麼比較省事的辦法就是對其進行備份恢復,可以按如下方法進行:

◆ 把安裝盤的第一張放到光碟機,然後重新啟動機器,在bois中設定系統用光碟機引導;

◆ 等安裝介面出來後,按f4鍵(不同linux版本此快捷鍵可能稍有不同,如即時linux是按f5鍵盤),進入「boot:」命令提示行輸入命令「linux rescue」,進入linux維護模式;

◆ 一系列鍵盤以及幾項簡單的配製(如設定鍵盤等),這裡不多做介紹,然後會出現如下字元:

sh#

此時就可以在此命令列下執行操作了:

sh#cp /backup/grub.conf.bak /mnt/sysimage/boot/grub/grub.conf

假設備份檔案為/backup/grub.conf.bak ,因絕大多數linux光碟修復模式中會將硬碟系統的「/」分割槽chroot到「/mnt/sysimage」處(在之前的配製中可以看到提示),所以拷貝的目標為「/mnt/sysimage/boot/grub/grub.conf」而非「/boot/grub/grub.conf」

◆ 退出此模式,重啟即可。

核心檔案、映象檔案、/boot目錄等檔案損害或丟失,也可以使用此種方法修復。

如果沒有grub配置檔案備份

如果沒有備份grub配置檔案,或者想通過此試驗更多了解grub的引導過程,可以利用grub強大的互動功能,採用如下方法:

在「grub>」命令列下可以進行如下操作:

◆ 查詢/boot/grub/grub.conf分割槽所在目錄可用如下命令:

grub> find /boot/grub/grub.conf (hd0,5)

需要注意的是,將得到grub.conf配置檔案所在系統的分割槽,(hd0,5)即表示它在分割槽hda6。

◆ 檢視grub.conf檔案錯誤可用如下命令:

grub>cat (hd0,5)/boot/grub/grub.conf

需要注意的是,可以檢視到配置檔案到底什麼地方出現了錯誤,以便進入後修改。

◆ 指定/boot分割槽可用如下命令:

root (hd0,5)

需要注意的是,從此步驟開始,即為本文前面所提到的grub配置檔案中的主要引導步驟,只是一般都是系統讀取grub配置檔案引導,出現問題時我們可以手工指定引導。

◆ 指定核心載入可用如下命令:

kernel /boot/vmlinuz ro root=label=/

◆ 指定映象檔案所在位置可用如下命令:

initrd /boot/initrd-2.4.22-3thiz.img

◆ 從/boot分割槽啟動可用如下命令:

boot (hd0,5)

此時,即可正常啟動,實際上,以上步驟就是執行了grub引導期間載入grub.conf檔案的步驟,當系統正常引導後將grub配置檔案修改正確後即可。以上這個方法也可以用於測試新編譯的核心。對此故障排除的了解可以加深對grub引導以及linxu系統引導的了解。

此外,還有一種情況是在安裝windwos時,把grub從mbr上清除,啟動後根本連grub的影子都看不到。如出現此問題,可以進入linux維護模式,執行如下命令:

sh#grub-install /dev/had

之後退出重新啟動系統,即可實現grub對linux和windows的多系統引導(此情況假設將linux安裝於第一塊ide硬碟上,若安裝於第二塊硬碟或scsi硬碟上,請做相應更改)。

Linux啟動故障類排除(Grub引導)

linux 系統在啟動過程中,首先是韌體 pc 上大多是 cmos bios 的物理檢測,諸如檢測系統的顯示卡 cpu 和硬碟等,可從系統按下電源後看到此檢測資訊 檢測無問題,將讀取硬碟的 mbr 主引導記錄 中的自舉程式,linux 中常用的自舉程式如 lilo 和grub。自舉程式 grub 在...

GRUB引導故障

bios mbr grub 第一步 備份grub.conf 1.mount dev sdb1 backup 2.cp boot grub grub.conf backup 3.ls backup 顯示內容 grub.conf lost found mbr.bak 第二步 破壞和恢復 1.rm rf ...

引導過程與服務控制 GRUB 引導故障(三)

grub 是大多數 linux 作業系統預設使用的引導程式,可以通過啟動選單的方式選擇進入不同的作業系統 如果有 當配置檔案 boot grub2 grub.cfg 丟失,或者關鍵配置出現錯誤,或者 mbr 中的引導程式遭到破壞時,linux 主機啟動後可能只出現 grub 的提示符,無法完成進一步...