Rocky 9.1升级至5.14.0-162.12/162.18内核后,dracut无法加载LUKS2加密LVM卷导致启动失败
Rocky 9.1升级至5.14.0-162.12/162.18内核后,dracut无法加载LUKS2加密LVM卷导致启动失败
从你描述的问题来看,核心症结是升级新内核后,dm_mod(设备映射器核心模块)无法在initramfs阶段加载,进而导致libdevmapper和内核驱动版本不兼容,最终LUKS2加密的LVM卷无法解密启动。结合你已经尝试的操作,我整理了几个针对性的排查和修复步骤:
1. 先确认内核模块的完整性与权限
首先得确保新内核的dm_mod模块存在且权限正常:
ls -l /lib/modules/5.14.0-162.18.1.el9_1.x86_64/kernel/drivers/md/dm_mod.ko.xz
如果文件缺失,试着强制重装kernel-modules包,确保没有安装报错:
dnf reinstall --force kernel-modules-5.14.0-162.18.1.el9_1.x86_64
另外,SELinux上下文异常也可能导致模块加载被拒,你可以在GRUB启动时临时添加selinux=0参数测试能否正常启动。如果能启动,再修复模块的SELinux上下文:
restorecon -Rv /lib/modules/5.14.0-162.18.1.el9_1.x86_64/
2. 手动指定核心模块重建initramfs
你之前重建initramfs可能没有明确指定加密和设备映射相关模块,试着手动添加这些模块重新生成:
dracut -f --add-drivers "dm_mod dm_crypt cryptd" initramfs-5.14.0-162.18.1.el9_1.x86_64.img 5.14.0-162.18.1.el9_1.x86_64
对比正常内核的initramfs模块列表,新内核多了nss-softokn和rngd模块,这两个可能和加密流程有关,但也不排除是干扰项,你可以尝试去掉它们重建测试:
dracut -f --omit-drivers "nss-softokn rngd" initramfs-5.14.0-162.18.1.el9_1.x86_64.img 5.14.0-162.18.1.el9_1.x86_64
3. 检查dracut配置与GRUB参数
- 查看
/etc/dracut.conf和/etc/dracut.conf.d/下的配置文件,确认有没有omit_drivers参数包含dm_mod的情况,要是有就删掉。 - 对比正常启动的5.14.0-162.6内核的GRUB条目,确保新内核的启动参数里没有
nodmraid这类禁用设备映射器的参数,保持参数一致。
4. 验证libdevmapper与内核的版本兼容性
虽然你说包都更到最新了,但还是手动核对下lvm2和内核的版本匹配度:
rpm -q lvm2 kernel
如果发现版本不一致,执行同步命令确保所有相关包都是官方兼容版本:
dnf distro-sync lvm2 kernel kernel-modules
5. 利用已能启动的救援系统修复
既然你已经能通过救援initramfs启动新内核,启动后可以做这些操作:
- 先加载所有缺失的核心模块:
modprobe dm_mod dm_crypt lvm2 - 然后重新生成正常的initramfs,确保所有必要模块都被包含:
dracut -f initramfs-5.14.0-162.18.1.el9_1.x86_64.img 5.14.0-162.18.1.el9_1.x86_64 - 最后检查生成的initramfs里是否有
dm_mod:lsinitrd initramfs-5.14.0-162.18.1.el9_1.x86_64.img | grep dm_mod
备注:内容来源于stack exchange,提问作者sherwood
相关产品推荐
相关产品推荐

