系统是 Fedora 22,最近从 Fedora 21 升级而来。Fedora 21 的剩余内核可以启动。升级后安装的两个内核无法启动。
该系统是 Intel S-5000 PAL,有 5 个 SATA 驱动器,配置为 raid 5 阵列。它已经运行了近 2 年,没有出现问题。并且如上所述,在 Fedora 21 内核下继续运行,没有出现问题。
问题是升级内核后,启动过程会挂起,3 分钟后会进入紧急 shell。journelctl 输出显示以下错误消息:
systemctl:启动 dracut 预触发挂钩..
lldpad:配置文件文件加载失败,
lldpad:创建一个新文件
lldpad:将 ctrl iface 绑定到 /com/intel/lldpad
dracut-pre-trigger: dracut-pre-trigger: rd.md=0 删除 md raid 激活
该过程结束时错误消息为:
未找到 raidboot /root 设备
Fedora 21 内核启动并运行正常。已尝试以下操作:
- 重建 initramfs
- 运行 grub2-mkconfig 并重新安装 grub
作为进一步的背景介绍,此服务器是类似服务器网络的一部分。其他服务器的升级成功。比较两个 initramfs.img 文件的 lsinit 输出显示类似的输出。唯一的区别在于预触发器和 lldpad 方面。
预触发器配置是造成这种情况的原因吗?缺少哪个步骤导致 dracut-pre-trigger 在创建 initramfs 时失败?支持预触发器需要哪些软件包?预触发器涉及哪些配置?是否需要重新运行预触发器以支持创建 initramfs?
答案1
这最终成为了一条漫长的路,但答案却很简单。系统使用 mdadm 创建 5 级 raid pv。Dracut 已作为从 fc21 升级到 fc22 的一部分与内核一起更新。grub.cfg 中的初始启动命令行有一个 rd.lvm.lv 选项。这导致 fc22 dracut 在启动过程早期停止查找 dm 阵列。从 grub.cfg 中的 vmlinuz 命令选项中删除 rd.lvm.lv 选项并添加 rd.auto 选项解决了该问题。关键是阅读 Dracut 文档,其中将 rd.lvm.lv 选项称为独占选项。独占选项可能已分阶段实施,导致实施限制的延迟。