Getting FakeRaid working in an Arch Linux installation
If you’re running into an error when booting your shiny new Arch install with the messageunabled to find root device 'UUID=
If you don’t care about what’s going on feel free to skip ahead to the solution section. The issue here is that the Intel RAID driver that many motherboards ship with is not a real hardware RAID controller. Hardware RAID exposes your RAID configuration to your OS as though it was a single real volume. This means your OS does not have to be aware of anything special going on.
However, Intel RAID is actually FakeRaid — your OS has to explicitly detect and load your configuration. If you installed your OS to a RAID volume, this loading needs to happen before your system boots since it is the root volume. This is why you are seeing the message unable to find root device — the RAID volume is not yet mounted.
The solution here is to make sure your initramfs in the boot directory is configured with mdadm_udev which is a utility to manage software RAID configurations. To do this, boot up into a terminal using an Arch ISO. Once you’re there run through the following commands
Use lsblk to figure out what device your OS is installed on. For me it’s md126p5
Mount that drive to a directory
Next, use arch-chroot to simulate as though you were booting up into that drive.
Use lsblkagain to find your boot directory (it’s usually around 100mb and a FAT formatted) and mount it. Mine is at md126p2
That’s enough preparing, time for the real fix. Open up your mkinitcpio.conf for editing
Edit the HOOKS line to includemdadm_udev right before the filesystems entry. Mine looks like this
Almost done! Save and exit the file and generate a new initramfs using mkinitcpio
All done! Reboot your machine and your RAID volume should be loaded properly and everything should work