怎樣修復grub開機引導 grub rescue

2021-09-25 09:00:09 字數 4454 閱讀 4255

很多時候,特別是在linux調整分割槽後,開機重啟時會出現

error : unknow filesystem

grub rescue>

的字樣,系統就是進不去。這表示你的grub2的配置檔案壞了……

由於分割槽調整或分割槽uuid改變造成grub2不能正常啟動,從而進入修復模式了(grub rescue),也稱救援模式。

在救援模式下只有很少的命令可以用:set  ,  ls , insmod , root , prefix

(1)set 檢視環境變數,這裡可以檢視啟動路徑和分割槽。

(2)ls 檢視裝置

(3)insmod 載入模組

(4)root 指定用於啟動系統的分割槽,在救援模式下設定grub啟動分割槽

(5)prefix 設定grub啟動路徑

具體修復步驟如下:

1、檢視分割槽:grub rescue> ls 回車

會出現如下字樣:

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

注:上面是我的分割槽裝置,每個人可能不一樣,但原理都是一樣的。

2、尋找ubuntu所在分割槽:

(就是尋找你的linux系統是裝在以上哪個分割槽裡)

grub rescue> ls (hd0,msdos1)/

若出現unknown filesystem字樣,則嘗試下乙個

……若出現的是你的ubuntu主資料夾下的資料夾和檔案的名字,那就是的要找的分割槽了。

3、修改啟動分割槽:

(假如你找到的啟動分割槽是hd0,msdos8)

grub rescue>root=(hd0,msdos8)

grub rescue>prefix=/boot/grub //grub路徑設定

grub rescue>set root=(hd0,msdos8)

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

grub rescue>insmod normal //啟動normal啟動

grub rescue>normal

之後你就會看到熟悉的啟動選單欄了

4、進入命令列啟動ubuntu

進入系統啟動選項介面後還是進不去,

因為你還沒有真正的修改grub,這個要到ubuntu裡修改

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

grub >set root=hd0,msdos8

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

grub >linux /vmlinuz-***-*** root=/dev/sda8 //裡邊的***x可以按tab鍵,如果有acpi問題,在最後加一句acpi=off

grub >initrd /initrd.img-***-***

grub >boot

這樣就可以進入了

5、進入ubuntu修復grub

在終端裡執行 sudo update-grub

sudo grub-install /dev/sda

6、重啟,搞定!!

注:我當時只是修改了1~3步驟,然後在選單欄就可以進入系統了,且一切正常。

可惜,在重啟時,系統就只有乙個游標在左上角不停的閃,咋也進不了系統。後來開機按f2,開機啟動項改為硬碟啟動就好了。
有遇到過這樣安裝不成功的,在grub2手冊中有另外的重灌grub2 到mbr 的方法,記錄一下:

[html] view plain copy

此方案安裝會使用 chroot 指令來訪問受損系統的檔案。  

一旦執行了 chroot 指令,livecd 會將損壞系統的 / (根目錄)當作是目前自己所使用的。

在 chroot 環境中執行的指令會影響受損系統的檔案系統,而不是 livecd 的。

1. 開機進入 livecd 桌面(ubuntu 9.10 或更新版)。注意此 livecd 必須要與您現在欲修復系統的版本相同 - 無論 32-bit 或是 64-bit(否則 chroot 會失敗)。

2. 開啟終端機 - 應用程式,附屬應用程式,終端機。

3. 確認您的標準系統分割區 - (選項是小寫的「l」)

sudo fdisk -l

若您不確定,執行

df -th

找到正確的磁碟容量及 ext3 或 ext4 格式。

4. 掛載您的標準系統分割區

用正確的分割區替換:sda1, sdb5 等等。

sudo mount /dev/sdxx /mnt #範例:sudo mount /dev/sda1 /mnt

5. 若您有獨立的 /boot 分割區:

sdyy 是 /boot 分割區的位置(例如 sdb3)

sudo mount /dev/sdyy /mnt/boot

6. 掛載重要的虛擬檔案系統:

sudo mount --bind /dev /mnt/dev

sudo mount --bind /dev/pts /mnt/dev/pts

sudo mount --bind /proc /mnt/proc

sudo mount --bind /sys /mnt/sys

7. chroot 至您的標準系統裝置:

sudo chroot /mnt

8. 若系統中沒有 /boot/grub/grub.cfg 或其內容不正確,使用以下指令重建

update-grub

9. 重新安裝 grub 2:

以正確裝置替換 - sda, sdb, 等等。不要指定分割區號碼。

grub-install /dev/sdx

10. 驗證安裝(使用正確的裝置,例如 sda。不要指定分割區):

sudo grub-install --recheck /dev/sdx

11. 退出 chroot:按下鍵盤之 ctrl-d

12. 解除安裝虛擬檔案系統:

sudo umount /mnt/dev/pts

sudo umount /mnt/dev

sudo umount /mnt/proc

sudo umount /mnt/sys

若您有掛載獨立的 /boot 分割區:

sudo umount /mnt/boot

13. 解除安裝 livecd 的 /usr 目錄:

sudo umount /mnt/usr

14. 解除安裝最後的裝置:

sudo umount /mnt

15. 重新開機。sudo reboot

另外常用的就是,無法啟動到grub介面,這個時候就需要另外的引導了,網上很多的方法是使用ubuntu的安裝光碟,也就是livecd,

我常用的就是u盤,用**桃載入乙個ubuntu 的iso 製作乙個ubuntu啟動u盤,然後bios選擇u盤啟動,

選擇 try running ubuntu,不選 install 選項

這樣就執行了我們製作在u盤上面的ubuntu系統,可以以這個為媒介來修改本機上其它的系統檔案,像上面提到的 先mount 上那些分割槽:

sudo mount /dev/sdxx /mnt

可先使用 sudo fdisk -l 命令檢視分割槽情況,選擇對應的

如果要修改對應內容 使用 chroot 切換 完了之後 ctrl+d退出

我這邊是13.04 , grub版本為:

[html] view plain copy

jscese@jscese-h61m-s2p:~$ grub-install -v  

grub-install (grub) 2.00-13ubuntu3

在這個情況下可以使用如下命令將正確的grub 安裝到 mbr:

[html] view plain copy

grub-install --root-directory=/mnt /dev/sda
我這的sda 為第一塊硬碟

症狀:開機顯示:grub loading

error:unknow filesystem

grub rescue>

原因:由於操作者不知道grub2分為兩部分,一部分(一般情況下)寫在了mbr上,另一部分寫在了某個分割槽的/boot/grub目錄(如果 /boot單獨分割槽,則直接寫在對應分割槽的/grub目錄)裡面。由於上述操作,致使grub2的mbr裡面的那一部分找不到/grub目錄裡面的那一部 分了(或者那一部分已經刪除了)。

修復GRUB引導

五一回來後,發現同事的電腦不能正常由grub引導了,自動進入了gurb的命令列狀態。估計是有人動過,但是還好同事沒有到崗所以有時間修好。使用kernel 與initrd命令引導進入了linux,發現可以正常進入,說明只是引導的問題,於是就去 boot grub下開啟grub.conf來看。的確是看不...

Kali Linux修復grub引導

kali的引導層是很脆弱的。如果你裝的是多系統,只要你重新分割槽,甚至更新一下win10都會導致kali無法啟動,而easybcd是不能修復kali的引導層的。下面我來說明一下如何重寫kali的引導層。把安裝kali的u盤插入並從該u盤啟動,進入後選擇live模式 第乙個 然後開啟終端。先輸入一下命...

系統引導失敗 GRUB 修復

網路資訊,原址不記得了,請見諒 1.用ubuntu 8.04live cd 啟動 2.開啟乙個終端,執行 sudo grub 你會看到 grub 這樣的提示符 3.在提示符 grub 後輸入find boot grub stage1 你會得到乙個執行結果,比如我的機子上結果是 hd0,5 這個命令其...