Ubuntu 16.04 grub rescue 模式下修復 grub


 
  前幾天整理了下電腦的分區,合並並刪除一些分區,結果導致 grub 被破壞了,Ubuntu進不去了,啟動后直接進入了 rescure 模式。后來又折騰了下,終於修復好了,現總結一下。

  先說一下我的系統環境,我是 Win7 + Ubuntu 16.04 雙系統,先安裝的 Win7,后安裝的 Ubuntu。采用的是 Windows 引導 Ubuntu 的方式,使用的工具是”EasyBCD 2.3 個人版本“。Ubuntu 分區時, "/boot" 是單獨分區的。詳細分區情況如下:“/boot” 分區, “/” 分區, “swap 交換空間“。

  另外需要說明的,我在安裝 Ubuntu 時,“安裝啟動引導器的設備”選擇的是 "/boot" 所在的分區。

  下面正式開始詳細說明解決辦法:

  進入 Ubuntu 時,畫面如下:


  首先,使用 ls 命令,找到 Ubuntu 的分區,執行 ls 命令后的結果如下:
ls


  此時會看到硬盤上的分區情況,例如(hd0,msdos1),(hd0,msdos2)等等,其中 hd0 中的 0 代表第 1 塊硬盤(硬盤號從 0 開始),msdos1 中的 1 代表第 1 個分區。

  然后依次調用如下命令,直到找到 Ubuntu 所在的分區,命令如下:ls (hdx,msdosy)
  其中 x 代表硬盤號,y 代表分區號。
  以我的機器為例,依次查看每個分區情況:
ls (hd0,msdos1)
ls (hd0,msdos2)
ls (hd0,msdos3)
#......
  執行結果如下:






  執行完之后,發現 (hd0,msdos5)和(hd0,msdos6)是 Ubuntu 的分區。然后分別執行如下命令,確定 grub 所在的分區:
ls (hd0,msdos5)/grub
ls (hd0,msdos6)/grub
# 若 “/boot” 沒有單獨分區,需要執行如下命令(待驗證):
ls (hd0,msdos5)/boot/grub
ls (hd0,msdos6)/boot/grub


  執行完之后,發現 (hd0,msdos5) 中,有 grub.cfg 文件。說明 (hd0,msdos5) 是我們要找的引導分區。

  之后,再依次執行如下命令,修復 grub 引導,並進入 grub2 引導畫面:
set root=(hd0,msdos5)
set prefix=(hd0,msdos5)/grub
insmod normal
normal
# 若 “/boot” 沒有單獨分區,需要執行如下命令(待驗證):
set root=(hd0,msdos5)
set prefix=(hd0,msdos5)/boot/grub
insmod normal
normal


  執行完上述命令之后,就可以看到 Ubuntu 的 grub2 引導畫面,可以正常進入 Ubuntu 了。


  不過你會發現,若重新啟動電腦的話,問題依舊。那是因為我們還沒有執行 grub 的更新命令。

  重新執行上述的命令,進入 Ubuntu。然后在終端執行如下命令更新 grub:
sudo update-grub2
sudo grub-install /dev/sda
  注意: /dev/sda 后面不要加分區號,例如 sda1,sda2 之類的。
  執行結果如下:




  至此,grub 終於的修復完畢。不過,此時若重新電腦的話,你會發現,啟動時變成了 Ubuntu 引導 Windows 了。而修復之前是 Windows 引導 Ubuntu。

  為了解決這個問題,我用的方法是先進入 Win7,然后使用 ”EasyBCD“ 重新修復 MBR 從而解決了這個問題。

  操作方法很簡單:啟動 EasyBCD,選擇左側的 ”BCD部署“,然后選中右側的 ”在MBR中安裝 Windows Vista+的bootloader“,也就是默認的第一項,最后點擊 ”編寫 MBR“ 按鈕。

  到這里,才算是直接的完成了 grub 的修復,並且可以用 Windows 引導 Ubuntu 了。
  ——————————————————————————————————
 
  在一般情況下,有人可能直接修改GRUB配置文件“/boot/grub/grub.cfg”,但使用“sudu vim /boot/grub/grub.cfg”發現提示這個是系統自動生成的文件,不建議直接編輯,而應該到“/etc/grub.d”和“/etc/default/grub”去修改。
  “/etc/grub.d”是操作系統菜單目錄,一般由系統生成,我們無需修改,接下來就是修改“/etc/default/grub”文件了。使用“sudo vim /etc/default/grub”命令打開該配置文件。
  其中的“GRUB_DEFAULT=0”就是設置的默認啟動項了。GRUB啟動項是按照啟動菜單依次使用數字進行索引了,起始數字為0。結合前面的系統啟動菜單,我們可以看到,Windows8的啟動項在第5項,因此這里我們就需要修改為4(因為第一項是從0開始的)
  修改完成,保存退出之后,還需要執行一下“sudo update-grub”來重新生成GRUB啟動配置項。(修改GRUB配置之后,注意使用update-grub更新啟動程序,否則修改將不會生效。)


免責聲明!

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



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