I assembled a new machine on Asus P9X79 motherboard, using its RAID controller to create a RAID1 array of two 500Gb drives.
When booting Arch from an external drive I am able to work fine with /dev/md126 which corresponds to the array. This way I created the partitions and filesystems on it, then chrooted and installed Arch Linux on the drive.
However, I am not able to boot from RAID successfully: /, /boot and /home cannot be remounted in read-write mode (mount returns 32), and I end up in emergency console. Trying to remount from there also fails, saying the drive is write-protected.
I figured that some necessary kernel modules were not loaded at boot and played with mkinitcpio.conf. I have mdadm_udev as a hook (after udev, before filesystems). To my understanding, this should be enough, but I also tried adding raid1, raid456, ext2 and ext4 to the MODULES array, this didn't change anything.
The RAID1 itself is recognized in the initial environment thanks to the mdadm_udev hook (the devices are there). raid1 is, I think, also loaded by this hook automatically.
I am still able to boot from external drive and mount the RAID1 device just fine; so I did lsmod on it and compared to lsmod on the "native" system. Nothing seems suspicious to me:
$ diff <(sort lsmod.old | cut -f1 -d ' ') <(sort lsmod.new | cut -f1 -d ' ')
7a8,12
> async_memcpy
> async_pq
> async_raid6_recov
> async_tx
> async_xor
13a19,20
> drm
> drm_kms_helper
24a32
> i2c_algo_bit
43c51
< nvidia
---
> nouveau
48a57,58
> raid456
> raid6_pq
64a75,76
> ttm
> uas
71a84
> xor
old is the one that works. As you can see, the only line starting with < is < nvidia. So all the necessary modules are loaded (some of the additional modules in new are dependencies of raid456 that I tried loading).
What am I missing here? What can be the possible differences between two systems? Kernel versions are the same: 3.6.8. (BTW the installation medium I first tried to use had 3.6.6 and didn't work with this array; all operations ended up hanging endlessly).
