Ubuntu+Win7雙系統grub的修復問題


  最近,在grub引導的Ubuntu+Win7雙系統上作業,用的是Ubuntu14.04.2。進行系統更新,更新到一般卡住了,恰好此時在進行grub相關文件的更新,我把機器重啟后進入了grub rescue模式,如下:

  error: file '/boot/grub/i386-pc/normal.mod' not found.

  Entering rescue mode...

  grub rescue>

  經過網絡一番查找和自身驗證,我匯總了三種解決方法。

  1.制作Ubuntu的U盤啟動工具,選擇U盤啟動機器,進入Try Ubuntu,安裝boot-repair工具,用該工具回復損壞的grub.

    a.在命令行下安裝boot-repair,首先鏈接源地址:$sudo add-apt-repository ppa:yannubuntu/boot-repair 

                         $sudo apt-get update

                         $sudo apt-get install boot-repair

    b.安裝成功后可以在dash中或終端里啟動boot-repair,開始修復系統。

    c.系統修復可能需要幾分鍾,后關機拔掉U盤,再啟動。即可看到熟悉的grub引導界面了。

  2.直接在grub rescue模式下選擇normal模式啟動,然后再修改更新grub。這種方法的關鍵點有三個,一是選擇好grub所在的分區目錄,二是找到root所在的分區,三是要有normal.mod文件。該模式下命令有限,常用的有ls set insmod,通過這三個命令,來找到上述文件目錄項后設置root和prefix,再選擇normal啟動模式。

    a.grub rescue>set //該命令會列出boot目錄所在的分區,grub目錄所在的分區;

    b.grub rescue>ls  //列出所有分區,樣式如(hd0,msdosX);

    c.grub rescue>ls (hd0,msdosX)/  //依次列出每個分區下的目錄,找出root在那個分區下,這里我們假設grub在(hd0,msdos6)/boot/grub,root在(hd0,msdos5)分區上;

    d.grub rescue>set root=(hd0,msdos5)

         grub rescue>set prefix=(hd0,msdos6)/boot/grub

       grub rescue>insmod /boot/grub/normal.mod  //若沒有normal.mod這個文件,請選擇第一種或第三種方法。

    e.grub rescue>normal  //顯示grub菜單

    f.通過顯示的菜單進入系統后,在命令行對系統進行更新修復。

      $sudo update-grub

      $sudo grub-install /dev/sda  //sda為硬盤號,不是分區號(sda1,sda2等等)

      $sudo shutdown -r now  //重新啟動機器

    ps:可以在grub.cfg中修改grub菜單。

  3.若第一和第二中方法無效,那么只能放棄所有從來再來,用做好的啟動工具重新做個Ubuntu系統,在更新修復grub -_*!。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM