grub rescue救援模式的處理

來源:互聯網
上載者:User

本人現在安裝的是Windows 7+Ubuntu 10.10 雙系統。今天想在自己的爛PC上裝Mac,於是分了兩個區,並且都沒格式化。用leopard硬碟安裝工具把dmg鏡像載入到新分區後(現在應該被格式化成HFS+分區了),又安裝了MacDrive,然後重啟系統。

 

再然後,就悲劇了。

 

grub無法引導進入系統,大黑屏上出現:

unkown filesystem

grub rescue>

 

OK,確實悲劇了:估計Windows剛才的分區活動把Grub搞鬱悶了,Grub進入Rescue模式。之後,手機google了一下,發現“love-薑紅陽”的一篇blog 寫得很好。現在轉貼過來。

  我的linux在調整分區後,出現了grub rescue> 這表示grub2的設定檔壞了,由於分區調整或分區UUID改變造成GRUB2不能正常啟動,從而進入修複模式(grub rescue)也稱救援模式。
在救援模式下只有很少的命令可以用: set  ,  ls , insmod , root , prefix
(1)set  查看環境變數,這裡可以查看啟動路徑和分區。 (2)ls   查看裝置 (3)insmod  載入模組 (4)root  指定用於啟動系統的分區,在救援模式下設定grub開機磁碟分割 (5)prefix 設定grub啟動路徑
一、分區亂了,我不知道boot目錄在什麼地方了 ls  #查看一下裝置狀態 如圖:

grub rescue> ls (hd0,msdos3) error: bad filename. 提示:錯誤的檔案名稱,我在測試時發現必須是後面加一個/
grub rescue> ls (hd0,msdos3)/ ./  ../  lost+found/
通過查看發現在(hd0,msdos1)/下有一個boot目錄
二、設定grub的開機磁碟分割和路徑 set root=(hd0,msdos1)  #設定grub開機磁碟分割 set prefix=(hd0,msdos1)/boot/grub/  #設定grub啟動路徑 查看一下設定情況: grub rescue> set prefix=(hd0,msdos1)/boot/grub root=hd0,msdos1
三、載入基本模組 insmod /boot/grub/normal.mod  #載入基本模組
四、進入正常模式 normal  #進入正常模式,出現菜單,如果載入grub.cfg(錯誤的)可能出現問題,按shift可以出現菜單,之後按c鍵進入控制台 進入正常模式後就會出現grub>這樣的提示符,在這裡支援的命令就非常多了。
五、引導系統 set root=(hd0,msdos1)  #設定正常開機磁碟分割 linux /boot/vmlinuz ....  ro text root=/dev/sda1  #載入核心,進入控制台模式 initrd  /boot/initrd ....  #載入initrd.img boot #引導
六、更新grub 安裝:grub-install /dev/sda 更新:update-grub


虛擬機器實驗: 經過上面的經曆,我在虛擬機器裡進行了一下實驗,加深鞏固。 一、把boot目錄移到別的分區 mv /boot/   /home/ 這樣重啟之後就出現了 grub rescue>救援模式。 二、手動啟動過程記錄 ls (hd0,msdos6)/  #找到了boot所在的分區 set root=(hd0,msdos6)  #設定grub開機磁碟分割 set prefix=(hd0,msdos6)/boot/grub/  #設定grub啟動路徑 insmod /boot/grub/normal.mod  #載入基本的模組 normal #從救援模式進入正常模式
set root=(hd0,msdos6) #設定系統開機磁碟分割,在這裡指向核心所在的分區 linux /boot/vmlinuz-2.6.35-22-generic ro text root=/dev/sda1 #載入核心 initrd  /boot/initr .....  #載入initrd.img boot  #啟動

測試中正常啟動並出現登入對話方塊。

 

雙系統,win7 下一鍵Ghost ,進入grub rescue 的解決方案

 

本人安裝的是win7+ubuntu10.10, 硬碟直接安裝。因為win7 下裝了幾個大軟體,所以決定一鍵Ghost 備份一下,結果重啟之後,就進入了grub rescue 介面:

error:unknown filesystem

grub rescue>

 

研究了半天,才解決這個問題。先說說是怎麼回事。

安裝ubuntu 時,啟動是用grub2 進行啟動。我的win7 在C 盤, Ubuntu 空間是從D 盤裡分出來的。我們知道,每次系統啟動時都是先進入grub ,也就是先在ubuntu 的啟動目錄裡選擇進入哪個系統,如果按分區來講,grub2 在(hd0,msdos7) 也就是我的ubuntu 所在的分區。那麼啟動時root 應該設在(hd0,msdos7), 可一鍵ghost 會修改啟動,它把root 改在(hd0,msdos9), 這是個windows 分區,也就是NTFS 分區,ubuntu 是不能識別這種檔案系統的,所以就有了error:unknown filesystem ,這種情況下自然不能啟動,那麼grub2 就會啟動grub rescue 模式,就是修複模式。那麼我們要做的就是把grub 重新指向(hd0,msdos7) 。

 

下面是具體步驟:

 

查看分區

因為每個人的分區不一樣,所以我們要查看分區, 用ls 指令

grub rescue>ls

斷行符號後,就會出現

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

grub rescue>

註:我用的是grub2, 對於grub 使用者,分區前沒有msdos 字樣

上面是我的分區,每個人的不一樣。

grub rescue>set 斷行符號

prefix=(hd0,msdos9)/boot/grub

root=hd0,msdos9

從上面可以看出來現在我的系統是從(hd0,msdos9) 裡啟動的。

那麼怎麼知道ubuntu 在哪個分區呢。進入第二步

 

尋找 ubuntu 所在分區

這一步我們要一個一個的試,

還是用ls 指令

先試下在不在(hd0,msdos8 )裡邊

grub rescue>ls (hd0,msdos8)

斷行符號會發現,不是,還是unknown filesystem

接著來

。。。。。。。。。

當我試到

(hd0,msdos7) 的時候,可以看到一下子多了很多字,這些就是我ubuntu 主資料夾下的檔案夾和檔案的名字。OK ,找到分區了。

 

修改開機磁碟分割

grub rescue>root=(hd0,msdos7)
grub rescue>prefix=/boot/grub //grub 路徑設定
grub rescue>set root=(hd0,msdos7)
grub rescue>set prefix=(hd0,msdos7)/boot/grub
grub rescue>insmod normal // 啟動 normal 啟動

grub rescue>normal

依次敲入上面的指令,是不是看到熟悉的啟動菜單了。選 win7 後,一鍵 Ghost 就開始備份系統了。別高興太早,一切還都沒開始呢。如果你不是因為一鍵 Ghost 問題進入 grub rescue, 可以直接跳到第⑤步

 

再來一遍

當你等著一鍵Ghost 備份完系統,重啟後,你發現還是

error:unknown filesystem

grub rescue>

別著急,再把前三步進行一遍就可以了

 

進入命令列 啟動 Ubuntu

進入系統啟動選項介面後,你發現,無論點那個還是進不去,這是因為你還沒有真正的修改grub, 這個要到ubuntu 裡修改

進入系統啟動項介面後,按C 進入命令列模式

grub >set root=hd0,msdos7

grub >set prefix=(hd0,msdos7)/boot/grub

grub >linux /vmlinuz-xxx-xxx root=/dev/sda7 // 裡邊的 xxxx 可以按 Tab 鍵,如果有 acpi 問題 , 在最後加一句 acpi=off
grub >initrd /initrd.img-xxx-xxx
grub >boot

Ubuntu 正常啟動了吧。

 

進入 ubuntu 修複 grub

大功就要高成了

進入Ubuntu 後, 修複grub

在終端裡運行

sudo update-grub

重建 grub 到第一硬碟 mbr
sudo grub-install /dev/sda

好啦,重啟,一切搞定。

 

 

感謝薑紅陽的解決方案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.