You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
  • 退出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的命令行界面。
  • 先手动找可用的内核和分区:
    1. 输入ls查看磁盘列表,比如会显示(hd0) (hd0,gpt1)这类
    2. 输入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:48:19