Grub rescue 修复思路

计算弹性计算技术服务知识库

一般进入这个模式说明连引导都没有正常加载,相当于只加载了MBR中的预置程序。

问题现场:

连接VNC你会看到进入了这个模式:

grub rescue>

进入上述阶段说明grub后续阶段没有被正常加载,我们首先要找到/boot目录去哪了:

grub rescue> ls
(hd0),(hd0,gpt0),(hd0,gpt1),(hd0,gpt2),。。。。。

逐个分区去找:

grub rescue> ls (hd0,gpt1)/

找到以后执行如下步骤(例如我的环境boot目录跑到了gpt2分区的root目录下):

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

最后跳转到normal模式:

grub rescue> insmod normal
grub rescue> normal

至此grub找回了,恢复了正常模式,但是伴随着这种问题大概率内核和initramfs所在的路径也肯定是错误的,所以还得再手动找一次。 执行normal之后系统会跳转到grub界面,因为从前面的步骤我们已经加载了grub并找到了grub.cfg:

找到kernel和initramfs并加载:
grub > linuxefi (hd0,gpt2)/boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
grub > initrdefi (hd0,gpt2)/boot/initramfs-3.10.0-1160.71.1.el7.x86_64.img
grub > boot

启动后系统会停在initramfs作为根分区的环境下,执行如下命令可以切换到系统盘根分区下面:

:/# mount /dev/vda2 /sysroot
:/# mount --bind /dev/ /sysroot/dev
:/# mount --bind /proc/ /sysroot/proc
:/# mount --bind /sys/ /sysroot/sys
:/# chroot /sysroot
:/# source /root/.bashrc
:/# source /root/.bash_profile

上述方式可以完整的从initramfs切换到系统盘根分区,同时也是验证根分区是否还支持正常启动的基础方法。

71
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论