grub rescue救援模式的處理

2021-09-06 20:24:27 字數 4357 閱讀 2697

我的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-***-*** root=/dev/sda7  //裡邊的***x可以按tab鍵,如果有acpi問題,在最後加一句acpi=off grub> initrd /initrd.img-***-*** grub >boot

ubuntu正常啟動了吧?

進入ubuntu修復grub

大功就要高成了

進入ubuntu後,修復grub

在終端裡執行

sudo update-grub

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

好啦,重啟,一切搞定!

grub rescue 模式下修復 ubuntu

由於在rescue模式下,只有少量的基本命令可用,必須通過一定的操作才能載入正常模組,然後進入正常模式。rescue模式下可使用的命令有 set,ls,insmod,root,prefix 設定啟動路徑 先假設grub2的核心檔案在 hd0,8 分割槽,再來看看怎樣從 rescue模式進入從 hd0...

linux救援模式

救援模式就是進入乙個執行於記憶體的小型linux系統 救援系統 有點類似於windows下的pe系統 開啟linux,會顯示最初的安裝介面,選擇第三項 rescue installed system 安裝救援系統 當救援系統成功載入後,會有下選項 rescue rescue,再次提示linux系統被...

linux救援模式

救援模式就是進入乙個執行於記憶體的小型linux系統 救援系統 有點類似於windows下的pe系統 開啟linux,會顯示最初的安裝介面,選擇第三項 rescue installed system 安裝救援系統 當救援系統成功載入後,會有下選項 rescue rescue,再次提示linux系統被...