1. 程式人生 > >grub rescue模式下啟動和修復

grub rescue模式下啟動和修復

   grub rescue 模式下啟動和修復

     重灌系統和刪除分割槽之後,可能導致系統啟動出現問題,重啟系統後容易進入到 grub rescue模式。筆者前一段時間由於需要,裝了雙系統(Win8和Ubuntu13.10)。後來想擴充套件Ubuntu系統磁碟空間,想從Win8系統中劃一部分空間,由於操作不當,導致進入了grub rescue模式。

     1.  進入grub rescue模式,一般會顯示如下內容:

           error: unknown filesystem
           grub rescue >

     2.  rescue模式下可使用的命令有:set,ls,insmod,root,prefix(設定啟動路徑)。只用通過一定的操作載入正常的模組,才能夠進入到正常的模式。

     3.  載入模組之前,我們首先需要找到grub2的核心檔案,也就是我們之前安裝好的系統所在的分割槽(即 root的值)。rescue模式下面沒有search的方法,只能通過 ls 逐個顯示查詢。

          3.1   直接使用 ls  可以顯示出磁碟分割槽的資訊

                    grub rescue>ls

                    (hd0,1),(hd0,5),(hd0,3),(hd0,2)

          3.2  使用 ls  試探顯示每個磁碟分割槽中是否有根目錄,也就是是否可以通過grub rescue啟動

                    grub rescue>ls (hd0,X)/boot/grub               注: X 是指磁碟分割槽編號,比如5

                 如果結果顯示出來的是Linux的檔案系統的基本結構,那麼我們就可以基本確定可以從這個分割槽啟動系統。

     4.   通過上面的步驟確定分割槽之後,我們設定 root的值

            grub rescue>root=(hd0,x)     或者  grub rescue>  set   root=(hd0,x)

     5.   找到啟動分割槽之後,還需要載入啟動模組,啟動模組一般在  /boot/grub 目錄下(也有可能在其子目錄中),可以通過 ls 命令檢視

            grub rescue>ls (hd0,X)/boot/grub/

     6.   找到啟動模組之後,設定啟動模組路徑

            grub rescue>prefix=/boot/grub    或者  grub rescue>  set   prefix=(hd0,x)/boot/grub

             注:啟動模組在grub子目錄下,可能由於grub2的原因,加入子目錄的路徑,可能會出錯。

     7.   接下來載入啟動模組

            grub rescue>insmod normal  (自動載入模組)

            或 grub rescue> insmod  (hd0,X)/boot/grub/normal.mod (手動設定載入模組)

     8.   載入啟動模組後,grub rescue 會有一些變化,比如說高亮,或者介面顯示  rescue >    或者   rescue grub > 等。然後正常啟動系統

            grub rescue> normal

     9.  完成上面步驟之後,就能夠經常的進入到我們熟悉的Linux啟動的介面,接下來的就可以正常使用Linux了。

     10. 為了下次啟動是不再進入 grub rescue模式,我們還需要補充兩個步驟

             更新boot啟動選項   #update-grub

            重建grub到硬碟的MBR  # grub-install /dev/sda

     

    至此,基本上就完成了grub rescue啟動和修復的過程。可能不同的Linux版本(或者grub的版本)之間grub rescue啟動和恢復過程,有些細節上的差異。


      參考以下內容:

      http://blog.csdn.net/tody_guo/article/details/7537454