如何修复云 VM 中的 Grub (Azure)

如何修复云 VM 中的 Grub (Azure)

我在做这件事时遇到了一些麻烦do-release-upgrade,它导致我的 grub 启动被终止。

因为我找不到如何在线解决此问题的步骤,所以我将在下面用我自己的注释进行回答。

答案1

首先安装vm-修复扩展对于蔚蓝。如果您使用不同的云提供商,则需要手动执行这些步骤(将操作系统磁盘附加到辅助虚拟机)。

az extension add -n vm-repair

然后创建一个修复虚拟机,将“损坏”的操作系统磁盘安装为数据磁盘(确保虚拟机已停止):

az vm repair create -g MyResourceGroup -n myVM \ 
  --repair-username USERNAME --repair-password PASSWORD \
  --verbose --associate-public-ip --distro ubuntu20

myVM 是您要修复的虚拟机的名称。如果发行版支持相同的 grub 版本,则不必完全匹配。

创建修复虚拟机后,查找其公共 IP(或通过串行控制台连接)。

ssh -o 'UserKnownHostsFile /dev/null' USERNAME@PUBLIC-IP

连接后:

sudo -s
mkdir /p2

# mount the disk to repair, see `lsblk`
# (on Azure this is usually sdc1)
mount /dev/sdc1 /p2

# now mount the efi to boot
mount /dev/sdc15 /p2/boot/efi

# prep for chroot
for i in /dev /dev/pts /proc /sys /run; do mount -B $i /p2$i; done

# chroot into the mounted disk
chroot /p2

# install grub
grub-install /dev/sdc --boot-directory=/boot

当你完成后

az vm repair restore -g MyResourceGroup -n MyVM --verbose

原始虚拟机现在应该能够再次启动。

相关内容