Linux grub引導修復
阿新 • • 發佈:2019-01-23
很多時候,特別是在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)
注:上面是我的分割槽裝置,每個人可能不一樣,但原理都是一樣的。
grub>
find /boot/grub/grub.conf 也行
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-xxx-xxx root=/dev/sda8//裡邊的xxxx可以按Tab鍵,如果有acpi問題,在最後加一句acpi=off
grub >initrd /initrd.img-xxx-xxx
grub >boot
這樣就可以進入了
5、進入ubuntu修復grub
在終端裡執行 sudo
update-grub
sudo
grub-install /dev/sda
6、重啟,搞定!!
注:我當時只是修改了1~3步驟,然後在選單欄就可以進入系統了,且一切正常。
可惜,在重啟時,系統就只有一個游標在左上角不停的閃,咋也進不了系統。後來開機按F2,開機啟動項改為硬碟啟動就好了。
#################################################################################################
法二
首先製作 Ubuntu 啟動 USB
複製程式碼程式碼如下:
sudo dd if=ubuntu-13.10-desktop-amd64.iso of=/dev/sdb1
#/dev/sdb1 為 USB 碟符
1.使用啟動 USB 進入 Ubuntu 試用環境
2.檢視硬碟分割槽狀況,獲取 Linux 系統安裝分割槽編號
程式碼如下:
sudo fdisk -l
檢視輸出結果,然後根據檔案型別和分割槽大小來判定 Linux 系統安裝在哪塊硬碟和安裝的分割槽。我的電腦是在 /dev/sda3 安裝了 Fedora。
或者,開啟 Gparted 圖形化工具來檢視分割槽資訊也可以。
掛載 Fedora 安裝分割槽
3.已知 Fedora 安裝在了 /dev/sda3 上,所以我們可以用下面命令來掛載 Fedora 安裝分割槽。你需要將 /dev/sda3 換成自己的 Linux 安裝分割槽。
程式碼如下:
sudo mount /dev/sda3 /mnt
4.掛載其他所需的目錄(使用 --bind)
程式碼如下:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
5.Chroot 到硬碟上的 Linux 系統
程式碼如下:
sudo chroot /mnt 【chroot命令把根目錄切換到指定目錄下】
6.安裝&更新 Grub
程式碼如下:
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
7.Grub 已經修復成功,我們還需要退出 chroot 環境、解除安裝已經掛載的裝置與目錄:
程式碼如下:
exit #退出 chroot 環境
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt
8.重啟。
#################################################################################################
可以進grub 這就好辦了 >root (hd0,x)
提示: 輸入(後 ,按 TAB鍵 自動補全 很好用的 。x表示你的linux根分割槽
>linux /vmlinuz ro quiet
>initrd /initrd.lz
>boot
先找到menu.lst選單檔案:
find --set-root /boot/grub/menu.lst
然後載入:
Grub 命令索引configfile /boot/grub/menu.lst
選單檔案可以換成grub.conf試試。
個人學習筆記,不當之處還請指正。
----------不定期更新------------
----------不定期更新------------