最近嘗試着把ubuntu安裝到一塊移動硬盤上,實現即插即用,也避免使用虛擬機帶來到性能下降,算是“真正的”體驗一下ubuntu。但是安裝完成,重啟之后卻總是進入 grub rescue> 模式,開不了機。當然,對於小白到我來說,肯定是baidu啦,畢竟不能google。結果發現出現這樣問題到同學還真不少,很多熱心到朋友都給出了解決方法。
引起這類問題的原因倒還不少,比如在windows系統中刪除linux系統或者是直接格式化啦linux盤,linux系統到啟動分區被更改了……總之就是grub2配置文件損壞啦,導致不能正常啟動,而進入了救援模式。具體原理不太懂,以后再補上.....
此文講解到比較詳細,可以參考。
主要分為一下幾個步驟:
1. 利用 ls 命令列出磁盤信息:
grub rescue>ls
會羅列所有的磁盤分區信息,比方說:
(hd0,msods1),(hd0,msdos2),(hd0,msdos3),(hd1,msdos2),.....
2. 繼續利用 ls 命令來查找 ubuntu 分區:這里需要注意區分在安裝ubuntu時是否單獨分了/boot分區
grub rescue> ls (hd0,msdos1)/boot/grub # 未單獨分出/boot分區
grub rescue> ls (hd0,msdos1)/grub # 單獨進行啦/boot分區
針對以上所示到磁盤分區逐個調用上述命令,直到結果顯示沒有錯誤,而是列出一系列文件為止。我的是 ls (hd0,msdos2)/grub 到時候列出了一些文件,說明找到啦ubuntu分區。
3. 修改啟動分區:同樣區分/boot是否單獨分區的情況
/boot沒有進行單獨分區:
grub rescue>set root=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos2)/boot/grub
grub rescue>insmod /boot/grub/normal.mod
grub rescue>normal
/boot進行單獨分區:
grub rescue>set root=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos2)/grub
grub rescue>insmod /grub/normal.mod
grub rescue>normal # 正常情況下,這就可以啟動進入ubuntu啟動界面啦
我的情況是/boot單獨分區啦,可是利用上述方法並不成功,總說找不到文件,后來百度經驗的方法給了答案(厲害):
set root=(hd0,msdos2)/grub
set prefix=(hd0,msdos2)/grub
insmod normal
normal
4.進入ubuntu之后,修復grub:
開機之后,打開終端:
sudo update-grub
sudo grub-install /dev/sdb # 這里sdb就是ubuntu安裝到了那個硬盤,我到是在移動硬盤里面,剛好是sdb,千萬不要寫sdb2等具體分區
寫下來備忘,原理不懂,盼大神指教。
