1. 程式人生 > >GRUB修復記錄

GRUB修復記錄

文件系統 system ubunt 設定 blank 設備 cnblogs 重建 TE

很多時候,特別是在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、尋找Linux所在分區,就是尋找你的Linux系統是裝在以上哪個分區裏:
grub rescue> ls (hd0,msdos1)/
若出現unknown filesystem字樣,則嘗試下一個,若出現的是你的Linux主文件夾下的文件夾和文件的名字,那就是的要找的分區了。
3、假如你找到的啟動分區是hd0,msdos6,修改啟動分區:
grub rescue>set root=(hd0,msdos6) //grub路徑設置
grub rescue>set prefix=(hd0,msdos6)/grub2
grub rescue>insmod normal //啟動normal啟動
grub rescue>normal
之後你就會看到熟悉的啟動菜單欄了,如果可以直接運行linux,則直接看第5步。
4、 進入命令行啟動linux
進入系統啟動選項界面後還是進不去,因為你還沒有真正的修改grub,這個要到Linux裏修改進入系統啟動項界面後,按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、正常進入系統後,如果不先修復grub的引導的話,重啟電腦之後還是會進入剛剛那個rescue模式。
首先重建/boot/grub2/grub.config文件。
如果是Ubuntu直接在終端裏運行:
sudo update-grub
如果是其他的Linux發行版,執行sudo update-grub命令時候提示找不到該命令的話可以用下邊命令來代替:
grub2-mkconfig -o /boot/grub2/grub.cfg
6、安裝grub到分區,首先運行df命令:
df

文件系統 1K-塊 已用 可用 已用% 掛載點
devtmpfs 1725688 0 1725688 0% /dev
tmpfs 1740456 0 1740456 0% /dev/shm
tmpfs 1740456 1924 1738532 1% /run
tmpfs 1740456 0 1740456 0% /sys/fs/cgroup
/dev/mapper/fedora-root 32878296 7421308 23757148 24% /
tmpfs 1740456 148 1740308 1% /tmp
/dev/mapper/fedora-home 16113532 306980 14968308 3% /home
/dev/sda6 999320 155568 774940 17% /boot
tmpfs 348088 16 348072 1% /run/user/42
tmpfs 348088 5788 342300 2% /run/user/1000


可看出掛載點是 /dev/sda,sda的含義是指的你的第幾個磁盤a代表第一塊sdb表示第二塊而sda1代表第一塊磁盤的第二分區。你可以用ls /dev/sd* 查看你的磁盤情況。
再運行:
sudo grub2-install /dev/sda
出現 Installation finished. No error reported.即表示完成修復。

參考資料:

http://blog.chinaunix.net/uid-27037833-id-3235145.html

https://www.cnblogs.com/keitsi/p/6229005.html

https://blog.csdn.net/peerless1994/article/details/52226169

http://www.cnblogs.com/saptechnique/archive/2012/04/05/2433643.html

http://www.jinbuguo.com/linux/grub.cfg.html

http://linux-wiki.cn/wiki/Grub2%E9%85%8D%E7%BD%AE

GRUB修復記錄