Azure VM内核升级后卡在GRUB Bootloader的恢复求助
Azure VM内核升级后卡在GRUB Bootloader的恢复求助
我太懂这种糟心的感觉了——花了大把时间折腾完VM的网络配置,结果升级内核后卡在GRUB引导界面,要是重建VM之前的功夫全白费,想想都头大!别慌,咱们可以用Azure自带的工具来修复,不用删VM重来,试试下面这些方法:
方法一:挂载故障磁盘到临时VM修复GRUB配置
这是最稳妥的办法,相当于把故障VM的系统盘拆下来接到另一台机器上修:
- 先把故障VM停止并解除分配(必须解除分配,不然磁盘没法挂载),在Azure门户找到这台VM的「OS磁盘」,点击「附加到VM」,选择一台已有的临时Linux VM(尽量和原VM同发行版,比如原先是Ubuntu就用Ubuntu临时机,没有的话快速新建一台就行)。
- 登录临时VM,用
lsblk命令找到挂载过来的磁盘分区(一般是/dev/sdc1这类),然后把它挂载到本地目录:sudo mount /dev/sdc1 /mnt/recovery - 挂载必要的系统虚拟目录,切换到故障系统的环境:
sudo mount --bind /dev /mnt/recovery/dev sudo mount --bind /proc /mnt/recovery/proc sudo mount --bind /sys /mnt/recovery/sys sudo chroot /mnt/recovery - 重新生成GRUB引导配置,不同发行版命令略有不同:
- Ubuntu/Debian系:
sudo update-grub - CentOS/RHEL系:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Ubuntu/Debian系:
- 退出chroot环境,卸载所有挂载的目录:
exit sudo umount /mnt/recovery/sys sudo umount /mnt/recovery/proc sudo umount /mnt/recovery/dev sudo umount /mnt/recovery - 把磁盘从临时VM上卸载,重新附加回原VM,启动原VM试试,应该就能正常进入系统了。
方法二:用串行控制台(Serial Console)手动引导系统
如果你的VM之前启用了串行控制台,直接就能在Azure门户里操作GRUB命令行:
- 打开VM的「串行控制台」(在「支持 + 故障排除」菜单下),连接后就能看到GRUB的命令行界面。
- 先手动找可用的内核和分区:
- 输入
ls查看磁盘列表,比如会显示(hd0) (hd0,gpt1)这类 - 输入
ls (hd0,gpt1)/boot/查看该分区下的内核文件,找到你之前能用的旧内核版本(比如vmlinuz-5.15.0-1047-azure)
- 输入
- 手动设置启动参数:
注意把linux (hd0,gpt1)/boot/vmlinuz-旧内核版本号 root=/dev/sda1 ro initrd (hd0,gpt1)/boot/initrd.img-旧内核版本号(hd0,gpt1)和/dev/sda1换成你实际的磁盘分区,旧内核版本号要和你查到的一致。 - 输入
boot启动系统,成功进入后可以卸载有问题的新内核,或者重新修复GRUB配置。
要是串行控制台没启用,方法一肯定能解决问题,毕竟Azure的磁盘挂载功能不会丢失你之前配置的任何数据,放心操作就行!
备注:内容来源于stack exchange,提问作者flackoverstow
相关产品推荐
相关产品推荐

