Passage au noyau 3.9, boot impossible car RAID non reconnu

J’ai rencontré le même problème. Le volume md du /boot n’est pas reconnu car les devices sont manquant.
Mais lorsque l’on fait un mdadm -A --scan dans le shell qui apparait au bout d’un certain temps plus de problème.

En fait, on peut voir qu’il y a un delai entre le lancement du initramfs et la découverte des disques :

[    0.526494] Unpacking initramfs...
[    1.615816] sd 2:0:0:0: [sda] Attached SCSI disk
[    2.135293] sd 4:0:0:0: [sdc] Attached SCSI disk
[    2.136773] sd 3:0:0:0: [sdb] Attached SCSI disk

[    2.204443] md: md0 stopped.
[    2.205282] md: bind<sda1>
[    2.206548] md: raid1 personality registered for level 1
[    2.206893] md/raid1:md0: active with 1 out of 4 mirrors
[    2.206928] md0: detected capacity change from 0 to 510328832

[    2.529464] sd 6:0:0:0: [sdd] Attached SCSI disk
[    2.658687] sd 5:0:0:0: [sde] Attached SCSI disk

Si je n’avait pas dit d’attendre une seconde, a t+1,2s le premier disque n’est pas encore détecté -> aucun membre visible pour le md !

Et voici mon script pour refaire plusieurs tentatives avec mdadm et un sleep entre chaque essai :

root@debian:~# more /etc/initramfs-tools/scripts/init-top/mdadm_assemble

#!/bin/sh

prereqs()
{
        # this part has been borrowed from the script local-top/cryptroot
        # Make sure that we are run last in init-top
        for req in $(dirname $0)/*; do
                script=${req##*/}
                if [ $script != $(basename $0) ]; then
                        echo $script
                fi
        done
}

md_assemble()
{
        for t in 1 3 5 10; do
                echo ========== mdadm $t ========================================
                sleep $t
                mdadm -A --scan && return
        done

}

case $1 in
        prereqs)
                prereqs
                exit 0
        ;;
esac

# assemble md disk
md_assemble

exit 0