解決grub rescue問題

iteye_401發表於2011-12-08

Win7+Ubuntu雙系統,對硬碟重新分割槽後啟動不了,提示 grub rescue>


起因是這樣的:


C盤空間太小,想從D盤分配出一塊空間以對C盤進行擴充。要實現容量擴充,現有的分割槽軟體需要按照如下的步驟展開:

(1)在D盤前free掉一塊空間S

(2)在S上建立新的分割槽(格式同C盤)

(3)Merge C & S


我先做了前兩個步驟,重啟電腦的時候出現了前面的問題。


解決方法參考了 「Ubuntu啟動問題以及Grub Rescue修復方法」,順利解決。我把解決方案總結到這裡:

先說一下為什麼會導致上面的引導錯誤。道理很簡單,原來ubuntu位於第n個分割槽,現在我在它前面多加了一個分割槽,導致目前的第n個分割槽不在是ubuntu,因此找不到ubuntu的載入程式,出錯。

解決的辦法就是修改引導引數,到新的分割槽上面去找。

Step 1: grub rescue>set

root=hd0,msdos9

prefix=(hd0,msdos9)/boot/grub

//Note: set命令可以顯示原先的引數值,可以由此找到原先ubuntu分割槽所在的分割槽號,此處是msdos9

Step 2: grub rescue>ls (hd0,msdos10)/boot/grub

//Note: 根據我的判斷,由於我新增了一個分割槽,此時ubuntu分割槽後移一號msdos10。為了驗證我的判斷,可以呼叫ls命令,此時列出了該路徑下的檔案,所以判斷是對的。

(你也可以像那篇文章裡寫的,先ls,然後逐個分割槽嘗試)

Step 3: grub rescue> set root=hd0,msdos10

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

//Note: 重新設定引數值

Step 4:grub rescue>insmod /boot/grub/normal.mod

grub rescue>normal

//Note: 此時會重現久違的引導選單

Step 5: 進入Ubuntu系統,終端下執行下面另個命令

sudo update-grub

sudo grub-install /dev/sda


重啟,搞定


相關文章