MEMO:grub rescue解決辦法

症狀:

開機顯示:GRUB loading


error:unknow filesystem

grub rescue>

原因:調整了一下磁盤分區,結果ubuntu就找不到grub文件了


因爲並不是想要徹底刪除ubuntu,所以採用如下解決辦法:

1, grub rescue>ls

列出文件:(我的分區還真是多啊,找grub簡直就是體力活)

(hd0)(hd0,msdos11)(hd0,msdos10)(hd0,msdos9)(hd0,msdos8)(hd0,msdos7)(hd0,msdos6)(hd0,msdos5)(hd0,msdos1)

然後依次調用如下命令: X表示各個分區號碼

2, ls (hd0,msdosX)/

當找到了安裝的分區的時候,會顯示出文件,不然顯示的都是unknown filesystem

如果/boot沒有單獨分區,那麼文件應該是用 ls (hd0,msdosX)/boot/grub 找到,我的電腦/boot已經單獨分區了,/boot在(hd0,msdos6),但是此處要用的是/grub,找到是在(hd0,msdos7)下,每臺電腦不一樣,以找到的爲準

3, 如果找到了正確的grub目錄,則設法臨時性將grub的兩部分關聯起來,方法如下:

以下是/boot沒有單獨分區的命令:

引用:
grub rescue>set root=(hd0,msdos7)
grub rescue>set prefix=(hd0,msdos7)/boot/grub
grub rescue>insmod /boot/grub/normal.mod


以下是/boot 單獨分區的命令:

引用:
grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/grub
grub rescue>insmod /grub/normal.mod


如果最後一條指令找不到normal.mod,那麼可以看看是不是有一個i386什麼的文件夾,可以選擇ls /grub/i386 看一下,如果有normal.mod文件夾就OK了

把最後一條指令改爲insmod /grub/i386/normal.mod


4,沒有顯示錯誤了之後,調用如下命令,就可以顯示出丟失的grub菜單了。
grub rescue>normal回到熟悉的界面啦~

5,進入ubuntu之後,在終端執行:

sudo update-grub
    sudo grub-install /dev/sda


6,如果找不到正確的/grub目錄,比如第3、4種誤操作,則嘗試尋找是否有linux核心文件(沒試過,已經成功)

依次調用如下命令: X表示各個分區號碼:
grub rescue>下,輸入:
如果/boot沒有單獨分區:

代碼:
ls (hd0,X)/boot


如果/boot單獨分區,則:

代碼:
ls (hd0,X)

找名字類似與vmlinuz-3.0.0-12-generic這樣的文件,這是linux核心文件,如果找到,記下(hd0,msdosX)中的X值。假設找到(hd0,msdos5)時,顯示了文件夾中的文件。

然後用live cd 或者 live usb啓動,在live cd的ubuntu的終端中依次輸入以下命令(sda5中的“5”必須改成上面記錄下來數值)(這兩句需要驗證):
如果/boot沒有單獨分區:

代碼:
sudo mount /dev/sda5 /mnt
sudo grub-install --boot-directory=/mnt/boot /dev/sda

如果/boot單獨分區,則:

代碼:
sudo mount /dev/sda5 /mnt
sudo grub-install --boot-directory=/mnt /dev/sda


然後重新啓動即可。

(以上這兩句命令也可以解決安裝ubuntu時grub安裝位置不對,沒有將grub安裝到/dev/sda,造成啓動時不出現ubuntu啓動項直接進入windows的問題,不過需要自行確定sda5中的“5”改成什麼數字。)
7, 如果連linux核心文件都沒有,那麼,徹底重新安裝吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章