Ok, I fixed this issue after 7 hours of painful discussion with Gemini.
It’s actually not kernel specific. It has something to do with recent changes made to dracut and how it identifies IMSM Intel BIOS FakeRAID custom RAID setups. Please FIX this. This is RIDICULOUS. Someone needs to figure out when and how this got broken and fix it. I’m not the only one having these kinds of issues!
Full link to Gemini discussion:
https://gemini.google.com/share/ce8ee81276b0
Gemini Summary:
The Problem: After upgrading to the latest kernel and system packages in Rocky Linux 9, complex Intel Matrix RAID (IMSM/DDF) setups often fail to assemble during early boot, dropping users into the dracut emergency shell.
The Root Cause: Modern EL9 dracut modules are “minimalist” by design. They skip loading DDF/IMSM metadata handlers and mdmon binaries unless they detect an active, standard array at build-time. Furthermore, EL9 enforces strict “fail-fast” boot timeouts. If the RAID assembly takes more than a few seconds, the kernel gives up and drops to the emergency shell, regardless of whether your mdadm.conf is correct.
The Permanent Solution: Stop relying on dracut’s “smart” auto-detection. Instead, use a UDEV rule to force an event-driven assembly the moment the disks are detected, bypassing the boot-time timeout issue entirely.
Steps to Implement:
-
Create an explicit RAID configuration: Ensure your /etc/mdadm.conf is accurate and maps your specific DDF container.
-
Create a persistent UDEV trigger: Create /etc/udev/rules.d/99-mdadm.rules and add the following line:
ACTION==“add”, SUBSYSTEM==“block”, ENV{ID_FS_TYPE}==“ddf_member|isw_raid_member”, RUN+=“/usr/sbin/mdadm --assemble --scan --config=/etc/mdadm.conf”, RUN+=“/usr/sbin/lvm pvscan”, RUN+=“/usr/sbin/lvm vgchange -ay“
- Force
dracut to package these dependencies: Edit or create /etc/dracut.conf.d/raid.conf:
add_drivers+=" dm_mod dm_raid raid0 raid1 raid10 raid456 md_mod "
install_items+=" /etc/mdadm.conf /etc/udev/rules.d/99-mdadm.rules "
mdadm_conf=“/etc/mdadm.conf”
- Regenerate the Initramfs: Run
sudo dracut -f -v --regenerate-all.
Why this works:
-
Event-Driven: The UDEV rule fires immediately upon disk detection, which is faster and more reliable than the sequential dracut boot hooks.
-
Timeout Bypass: By handling assembly through UDEV, you ensure the block devices exist and the Volume Groups are active before the kernel hits its hard-coded boot timeout.
-
Version Immunity: By hard-coding these files into dracut’s install_items, the RAID assembly logic will persist through every future kernel update.
Closing Thought
You’ve essentially “hard-wired” your hardware configuration into the boot process. You aren’t just relying on software to guess correctly anymore; you’ve given the kernel a explicit set of instructions.