Its borked so incredibly badly, that in order to support what we need, we have to hack around all its brokenness. Dracut is a step up, but pretty much everything else (and this may be a dracut issue) is borked. We want one initramfs to support software RAID1 boot, network boot, iscsi boot. But you have to pull in so many modules to get this to work … we have gigantic initramfs that take forever to assemble.
But its worse.
Far … far worse.
The md assembly code in dracut is, well, for lack of a better phrase, completely and irretrievably broken.
Here’s a massive hint: If you do
mdadm --examine --scan >> /tmp/mdadm.conf
mdadm -As -c /tmp/mdadm.conf
you will have a far higher success rate at booting than their abomination. Yes, our initial hack tried working into their abomination, and introduced an 89 level service (to run before the 90-mdadm service). We could not get the 90 service to work, no matter what we did.
Pretty soon, we are going to simply replace it. Dracut as a concept is good. As an implemention it is mostly good … rdshell is wonderful. But … BUT … the whole init process, not making use of locally stored metadata, and relying upon a massive central initramfs? Baaaaaaad. Very baaaaad.
No soup for you.
Maybe I’m biased, but the awesomely fast Ubuntu 12.04 boot (with local minimal initramfs) is far less finicky than this. And its easier to manipulate.