本文为您介绍Alibaba Cloud Linux 2系统的ECS实例升级内核失败的原因及解决办法。
问题描述
在符合如下条件的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过程,导致实例启动后出现以下情况:
/proc/mounts
中/
根目录的挂载设备为/dev/root
。系统没有正确创建软链接
/dev/root
。
因此在内核升级过程中,grubby脚本无法正确识别根分区挂载的设备,即升级过程中无法正确更新grub配置信息。
解决方案
方案一:临时修复
修复“grubby fatal error”问题
临时修复
执行以下命令,创建
/dev/root
软链接。ln -sf /dev/vda1 /dev/root
持久修复
执行以下命令,新建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镜像中已修复,您使用新镜像即可。