MD metadata/superblock ve verzi 0.90 dávala možnost, aby kernel sám složil MD RAIDy při prohledávání disků
(bez asistence user-space nástroje mdadm).
Novější verze MD superblocku toto neumožňují, proto se MD RAID skládá pomocí mdadm spouštěného z initial RAMdisku. Tenhle krok není plně automatický ("nahoď všechny MD svazky co najdeš"), vyžaduje mdadm.conf, který je třeba předat skriptu mkinitrd (v Debianu update-initramfs nebo na nižší úrovni mkinitramfs). Stačí mít v systému platný /etc/mdadm.conf, a mkinitrd/mkinitramfs ho převezme. A taky je potřeba, aby v initial RAMdisku byly všechny potřebné moduly. (Debian: /etc/initramfs-tools/modules )
Explicitní start MD svazků pomocí mdadm v initial ramdisku je už asi 10 let v distribucích default. Sice už to postrádá primitivní krásu automatického poskládání polí v režii kernelu, ale je to zjevně cesta kupředu a je už dobře prošlápnutá. Stačí dodržovat pravidla. Modernější verze MD superblocku má své výhody a update initial RAMdisku je vlastně taky dost nezáludný.
Jednou jsem si takhle naběhl na hrábě, které jsem byl sám nechal v trávě válet. Zkompiloval jsem si svůj vlastní kernel, kde jsem měl MD a související ovladače monoliticky. V debianu. A při nějakém dist-upgrade přišel novější distribuční kernel, který měl ovladače jako moduly. Ovšem v /etc/initramfs-tools/modules jsem potřebné MD moduly neměl uvedené. A hrozně jsem se divil, že mi přirozeným způsobem systém nenastartuje (initrd nenajde root volume na MD RAIDu), ale když vnutím boot do rescue režimu, tak mi mdadm --assemble --scan načte všechno. Docela mi trvalo, než jsem zjistil, že systemd za to *fakt nemůže* :-)
Mám matné tušení, že historicky mezi nějakými dvěma verzemi Debianu chyběl po dist-upgradu v initrd modul crc16 nebo co (potřebný pro ovladače MD RAIDu).