Alibaba Cloud Linux 2系统的ECS实例升级内核失败

Alibaba Cloud Linux 2系统的ECS实例升级内核失败

更新时间:2020-09-14 10:06:31

问题描述

在符合如下条件的Alibaba Cloud Linux 2实例升级内核时,提示grubby报错,具体报错信息如下所示。且内核升级后,grub启动项不能自动更新,新内核功能不生效。

  • 镜像:aliyun_2_1903_x64_20G_alibase_20200114.qboot.vhd镜像(以下简称qboot镜像)。
  • 内核:4.19.81-17.al7.x86_64内核版本。
kernel-4.19.91-19.2.al7.x86_64.rpm                                                                                         |  14 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : kernel-4.19.91-19.2.al7.x86_64                                                                              1/1
grubby fatal error: unable to find a suitable template

Broadcast message from systemd-journald@iZbp1XXXXtbay7jZ (Fri 2020-07-31 15:38:45 CST):

dracut[2183]: Failed to install module xen_blkfront

问题原因

该问题的原因是由于qboot镜像启动优化去除了initramfs过程,导致实例启动后出现以下情况:

  1. /proc/mounts/根目录的挂载设备为/dev/root
  2. 但是系统没有正确创建软链接/dev/root

因此在内核升级过程中,grubby脚本无法正确识别根分区挂载的设备,即升级过程中无法正确更新grub配置信息。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

临时解决方法

qboot镜像升级内核时的报错包含以下两个问题:

  • grubby fatal error
  • dracut failure

对于这两个问题,临时修复方案如下,且需要在升级新内核前执行:

修复“grubby fatal error”问题

执行以下命令,创建/dev/root软链接。

ln -sf /dev/vda1 /dev/root

持久化修复“grubby fatal error”问题

执行以下命令,新建udev rule自动创建/dev/root软链接。

sed -i '/ACTION=="remove"/a\\n# create symbol link for /dev/root\nACTION!="remove", SUBSYSTEM=="block", ENV{MAJOR}=="254", ENV{MINOR}=="1", SYMLINK+="root"' /usr/lib/udev/rules.d/60-persistent-storage.rules

修复“dracut failure”问题

执行以下命令,删除不必要的dracut配置文件。

rm -rf /etc/dracut.conf.d/*

固化解决方案

该问题在aliyun_2_1903_x64_20G_qboot_alibase_20200904.vhd版本的qboot镜像中已修复,您使用新镜像即可。

适用于

  • 云服务器ECS

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。