Alibaba Cloud Linux 3.8版本镜像升级内核报错的修复方案

阿里云已确认Alibaba Cloud Linux 3.8版本的镜像在升级内核时会有报错信息出现,本文将描述该问题的影响及解决方案。

问题现象

在Alibaba Cloud Linux 3.8版本的镜像中升级内核版本时,会在安装内核包的同时出现报错信息,但对应的内核包可以正常安装成功,报错信息类似如下图所示。

image.png

问题原因

Alibaba Cloud Linux 3.8版本镜像为支持更多规格的机型,对镜像的dracut配置新增了额外的内核模块。因新增的部分内核模块已经被built-in集成到内核vmlinuz文件中,导致后续在安装内核包的过程中,dracut工具因无法找到对应的内核模块而报错。但是该报错不会影响内核软件包的安装、升级等。

影响范围

镜像ID中日期在20230727~20230925范围内且版本为如下所示的Alibaba Cloud Linux 3镜像:

  • Alibaba Cloud Linux 3.2104 LTS 64位

  • Alibaba Cloud Linux 3.2104 LTS 64位 快速启动版

  • Alibaba Cloud Linux 3.2104 LTS 64位 等保2.0三级版

  • Alibaba Cloud Linux 3.2104 LTS 64位 UEFI版

  • Alibaba Cloud Linux 3.2104 LTS 64位 ARM版

  • Alibaba Cloud Linux 3.2104 LTS 64位 ARM版 等保2.0三级版

您可以运行cat /etc/image-id命令,查询镜像ID和镜像版本,回显类似如下信息:

image_name="Alibaba Cloud Linux 3.2104 LTS 64 bit"
image_id="aliyun_3_x64_20G_alibase_20230727.vhd"
release_date="20230728162541"

解决方案

  1. 远程登录Alibaba Cloud Linux 3.8版本镜像的ECS实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例

  2. 运行以下命令,移除内核中重复的内核模块。

    • x86架构

      sudo sed -i "s/virtio_blk//" /etc/dracut.conf.d/virt-drivers.conf
    • ARM架构

      sudo sed -i "s/xen-blkfront xen-netfront//" /etc/dracut.conf.d/virt-drivers.conf
  3. 运行以下命令,重新升级内核版本,确认报错是否解决。

    sudo yum install kernel