0%

PVE引导丢失修复

遇到一个很棘手的问题,PVE的引导丢了!

丢失引导有两种情况,GRUBgrub rescue模式。

GRUB

一不小心,引导丢了,表现为:启动系统直接显示了GRUB,但是没有任何反应。
pve.error.1.png

这时候我们需要找一个ISO镜像来修复。最好是同一个大版本的PVE。

启动的时候,选择高级选项,选择 DEBUG 模式,然后可以进入这里(如果一直没有~#出现,则可以按一下回车):
pve.error.2.png

执行fdisk -l看看磁盘信息:
pve.error.3.png

一般情况下,进入GRUB菜单,且没有任何反应,则可能是那个1000多k的分区坏掉了,如果你有备份,则把备份还原回去,如果没有,则从其他的pve系统中备份一个出来,然后恢复到这个分区上。
注意,要同样安装方式的pve系统,不然分区结构可能不一样。

备份分区:

1

恢复分区:

1
dd if=/root/backup.img of=/dev/sda1 bs=4M status=progress

pve.error.4.png

如果是原来的备份,则此时重启应该可以进入系统了,如果不行,那看看是不是后面的情况。

grub rescue

当引导损坏,但是没丢失的情况下,会出现grub rescue界面。此时需要手动输入命令来修复系统。

pve.error.5.png

检查当前的环境,执行set:

pve.error.7.png

检查硬盘

我们可以直接执行ls来查看硬盘:
pve.error.6.png

如果你的硬盘只有hd0,没有lvm相关的,那应该是没有使用lvm模式,执行操作:

1
2
set prefix=(hd0,1)/grub
set root=(hd0,1)

然后执行加载模块

1
insmod normal

如果没有报错,则开始引导执行

1
normal

如果使用的是使用lvm模式,上述应该无法修复,需要按照以下操作:

1
2
set prefix=(lvm/pve-root)/grub
set root=(lvm/pve-root)

然后执行加载模块

1
insmod normal

pve.error.8.png
加载模块如果报错了,可能是grub路径不对,修改改为

1
set prefix=(lvm/pve-root)/boot/grub

然后再次执行加载模块

1
insmod normal

如果还是不对,那就进入live模式或者其他pve系统里面,搜索这个i386-pc文件夹,然后找到对应的grub文件路径,设置上去。

pve.error.9.png
如果没有报错,则开始引导执行

1
normal

执行之后不出意外的话,将会进入引导,开始启动:
pve.error.10.png

后续步骤

启动成功之后,还要做一个重要的操作,重新更新引导:

1
2
3
4
# 更新引导
update-grub
# 将引导写入硬盘
grub-install /dev/sda

pve.error.11.png
pve.error.12.png

只要没有出错,就表示引导修复成功了。

我们可以重启验证一下。

参考网站

https://www.howtoforge.com/tutorial/repair-linux-boot-with-grub-rescue/