這表示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
到第一硬碟
mbrsudo grub-install /dev/sda
好啦,重啟,一切搞定!
錯誤修改檔案內容導致ubuntu無法啟動
今天在將dhcp變為手動配置時,修改了 etc network inte ces這個檔案,但是檔案內容有錯誤,重啟機器,無法進入系統。令我甚是難受,因為機子上面裝了好多東西,我這台機器是分布式集群中的主節點,好多從節點都要通過nfs從他上面掛載相應內容,如果重灌的話,我就瘋啦,後面查資料和實驗,找到...
ubuntu修改變數導致系統無法啟動
前言 在昨天 使用者為了開發環境,使用者修改了環境變數,導致我進入單使用者模式什麼操作都提示報錯,好在乙個同事老哥的幫助,讓我對這種神坑的操作有了新的認知,這個就是使用者修改了環境變數導致單使用者做任何操作都提示這種錯誤資訊 所以我們想了個方法恢復這個系統 單使用者模式下操作如圖 針對這個問題 老哥...
ubuntu無法掛載windows分割槽
今天在windows中關機 注意是關機不是重啟 之後再回到ubuntu,發現原來在windows下的兩個磁碟不能掛載了,之前都能正常掛載和讀寫的。後來突然意識到windows10的關機是深度休眠,也就是說磁碟沒有完全釋放,因此外部無法訪問。於是乎回到windows10重新啟動,回到ubuntu後發現...