Disclaimer: Hi everyone, I solved this problem with the help of AI, and this is a recap. I know AI posts are not always appreciated, but I have personally reviewed this text in a human way, hoping to help anyone who finds themselves in difficulty with RAID, SELinux, and boot timeouts.
I hope this helps anyone who, like me, has a RAID setup and has had the same problem.
The problem
After the latest system update (zypper dup), my openSUSE Tumbleweed workstation began failing to boot, consistently dropping into emergency mode.
System Setup:
- CPU: AMD Ryzen 9 3900X.
- OS: openSUSE Tumbleweed (Kernel 6.18.7-1-default).
- Storage: Root partition on LVM, and the
/homepartition on a Software RAID 0 array composed of two NVMe drives.
Symptoms:
- Boot timeout: the process would hang for 90 seconds, eventually timing out while waiting for the UUID of the
/homepartition (46818d92...). - Explicit RAID disable: The logs showed a specific dracut error:
rd.md=0: removing MD RAID activation. This indicated the initramfs was being instructed to ignore RAID devices. - SELinux denials: several
avc: denied { getattr }errors appeared formdadm, preventing the utility from correctly identifying or assembling the array during early boot. - NVMe name swapping: NVMe identifiers (
nvme0,nvme1,nvme2) were swapping roles between reboots, making device-path based mounting unreliable.
The solution
The fix involved ensuring persistent identifiers, forcing the RAID assembly in the initramfs stage, and resolving SELinux permission blocks.
1. Persistent identifiers and fstab
The first step was to sanitize /etc/fstab.
I replaced all device-mapper paths (like /dev/mapper/system-root) with UUIDs to ensure the kernel could always find the correct partitions regardless of NVMe enumeration order.
We also optimized the mount order (boot, system, local backup disks, swap and network drives) and options to streamline the process and speed up the initial boot sequence.
2. GRUB configuration
I updated /etc/default/grub to use UUIDs for all mount points and added kernel flags to override the RAID block.
Updated GRUB_CMDLINE_LINUX_DEFAULT:
root=UUID=aea38da1...: Replaced mapper paths with the unique ID.rd.md=1: Explicitly enabled RAID to override therd.md=0default found in the logs.rd.auto=1: Forced auto-detection of storage layers.rd.md.uuid=b0c111d4...: Provided the specific UUID of the RAID array to the kernel during pre-boot.
3. Dracut (Initramfs) module fix
I created a configuration file to ensure the RAID drivers are included and the mdadm.conf is respected.
File: /etc/dracut.conf.d/10-raid-fix.conf
add_dracutmodules+=" dm mdraid "
mdadmconf="yes"
hostonly="yes"
After saving, I regenerated the boot images for all kernels:
sudo dracut -f --regenerate-all
4. SELinux relabeling
Since SELinux was actively blocking mdadm processes from accessing system modules, I triggered a full filesystem relabel: sudo touch /.autorelabel
Note: The subsequent boot took about 10-15 minutes to finish scanning and re-labeling all files (especially on the large RAID array), but this resolved the permission issues permanently.
Outcome
The system now boots correctly and quickly (very quickly compared to my previous setup!). The RAID 0 array (md127) is automatically assembled and active upon reaching the desktop.
Hope this helps anyone dealing with complex storage setups and boot failures on Tumbleweed!