安装完Ubuntu忘记写入引导文件,或者使用工具调整分区后,很容易出现grub损坏无法进入系统的情况。 也可能是由于分区调整或分区UUID改变造成grub2不能正常启动,从而进入修复模式了(grub rescue),也称救援模式。
代码语言:javascript复制error : unknow filesystem
grub rescue >
在救援模式下只有很少的命令可以用:
代码语言:javascript复制(1)set 查看环境变量,这里可以查看启动路径和分区。
(2)ls 查看设备
(3)insmod 加载模块
(4)root 指定用于启动系统的分区,在救援模式下设置grub启动分区
(5)prefix 设定grub启动路径
具体修复步骤如下:
1、查看分区:
代码语言:javascript复制grub rescue> ls //回车,会出现如下字样:
(hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos1)
2、寻找ubuntu分区:
若包含/bin以及/sbin等目录,表示为主分区。 若包含/boot/grub或者/grub,即为启动分区。
代码语言:javascript复制grub rescue> ls (hd0,msdos1)/
3、修改启动分区:
假如你找到的主分区为(hd0,msdos6),grub所在路径是(hd0,msdos1)/grub
代码语言:javascript复制grub rescue > root=hd0,msdos1
grub rescue > prefix=/grub //grub路径设置
grub rescue > set root=hd0,msdos1
grub rescue > set prefix=(hd0,msdos1)/grub
grub rescue > insmod normal //启动normal启动
grub rescue > normal
之后你就会看到熟悉的启动菜单栏了
4、进入命令行启动ubuntu
进入系统启动选项界面后还是进不去,按C进入命令行模式
代码语言:javascript复制grub > set root=hd0,msdos1
grub > set prefix=(hd0,msdos1)/grub
grub > linux /vmlinuz-xxx-xxx root=/dev/sda6 //按Tab键自动补全,若acpi有问题,在最后添加acpi=off
grub > initrd /initrd.img-xxx-xxx
grub > boot
这样就可以进入了
5、进入ubuntu修复grub
代码语言:javascript复制sudo update-grub
sudo grub-install /dev/sda
6、重启,搞定!!