Begin: Waiting for root file system... ...
Done.
        Check root= bootarg cat /proc/cmdline
        or missing modules, devices: cat /proc/modules ls /dev
ALERT! /dev/sda1 does not exist. Dropping to a shell!


Busybox v1.1.3 (Debian 1:1.1.1-4) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
(initramfs)

Mais qu'est-ce qu'il nous arrive madame Michu ? Tout simplement, les nouveaux volumes sont détectés par le noyau avant le disque sur lequel est installé le système. Résultat, le système n'est plus sur /dev/sda mais sur /dev/sdc. Et le plus drôle c'est qu'il est parfois sur /dev/sdb parce que les controleurs Areca mettent du temps à se déclarer.

Comment laver l'affront que nous impose ce petit impudent ? En jouant avec la partition RAM d'initialisation, j'ai nommé initramfs.

C'est extrêmement simple, on va demander à la partition de démarrage en RAM de charger les modules sata dans l'ordre qu'on souhaite. Dans notre cas, le pilote ata_piix avant arcmsr. Les outils Debian permettent de faire ça de façon très simple, il suffit d'ajouter les modules qu'on souhaite voir chargés lors du démarrage dans le fichier /etc/initramfs-tools/modules. Les modules doivent être listés, un par ligne dans l'ordre de chargement souhaité. Dans notre cas, il suffit de préciser le module qui prend en charge le disque de démarrage.

# cat /etc/initramfs-tools/modules
[...]
ata_piix

Il faut maintenant mettre à jour l'image en RAM pour propager ces modifications.

# update-initramfs -v -k 2.6.18-5-686 -t -u
Keeping /boot/initrd.img-2.6.18-5-686.dpkg-bak
update-initramfs: Generating /boot/initrd.img-2.6.18-5-686
Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/scsi_mod.ko
Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/scsi_transport_spi.ko
Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
[...]
Adding binary /sbin/mdrun
Building cpio /boot/initrd.img-2.6.18-5-686 initramfs
Backup /boot/initrd.img-2.6.18-5-686.bak

Un petit redémarrage et tout est revenu en ordre. Et le plus beau, c'est que lorsque vous devrez mettre à jour votre noyau, le nouveau noyau fera automatiquement la reconstruction de l'image RAM d'initialisation.