本文為您介紹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鏡像中已修復,您使用新鏡像即可。
文檔內容是否對您有幫助?