很多時候,特別是在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 這個命令其...