遇到一个很棘手的问题,PVE的引导丢了!
丢失引导有两种情况,GRUB
和grub rescue
模式。
GRUB
一不小心,引导丢了,表现为:启动系统直接显示了GRUB
,但是没有任何反应。
这时候我们需要找一个ISO镜像来修复。最好是同一个大版本的PVE。
启动的时候,选择高级选项,选择 DEBUG
模式,然后可以进入这里(如果一直没有~#
出现,则可以按一下回车):
执行fdisk -l
看看磁盘信息:
一般情况下,进入GRUB菜单,且没有任何反应,则可能是那个1000多k的分区坏掉了,如果你有备份,则把备份还原回去,如果没有,则从其他的pve系统中备份一个出来,然后恢复到这个分区上。
注意,要同样安装方式的pve系统,不然分区结构可能不一样。
备份分区:
1 |
恢复分区:
1 | dd if=/root/backup.img of=/dev/sda1 bs=4M status=progress |
如果是原来的备份,则此时重启应该可以进入系统了,如果不行,那看看是不是后面的情况。
grub rescue
当引导损坏,但是没丢失的情况下,会出现grub rescue
界面。此时需要手动输入命令来修复系统。
检查当前的环境,执行set
:
检查硬盘
我们可以直接执行ls
来查看硬盘:
如果你的硬盘只有hd0,没有lvm相关的,那应该是没有使用lvm模式,执行操作:
1 | set prefix=(hd0,1)/grub |
然后执行加载模块
1 | insmod normal |
如果没有报错,则开始引导执行
1 | normal |
如果使用的是使用lvm模式,上述应该无法修复,需要按照以下操作:
1 | set prefix=(lvm/pve-root)/grub |
然后执行加载模块
1 | insmod normal |
加载模块如果报错了,可能是grub路径不对,修改改为
1 set prefix=(lvm/pve-root)/boot/grub然后再次执行加载模块
1 insmod normal如果还是不对,那就进入live模式或者其他pve系统里面,搜索这个
i386-pc
文件夹,然后找到对应的grub文件路径,设置上去。
如果没有报错,则开始引导执行
1 | normal |
执行之后不出意外的话,将会进入引导,开始启动:
后续步骤
启动成功之后,还要做一个重要的操作,重新更新引导:
1 | 更新引导 |
只要没有出错,就表示引导修复成功了。
我们可以重启验证一下。
参考网站
https://www.howtoforge.com/tutorial/repair-linux-boot-with-grub-rescue/