RAID logiciel et EFI, le problème et une solution

Tux, la mascotte officielle de Linux

Il m’est arrivé récemment de vouloir faire un RAID logiciel mirroir (RAID 1) entre 2 disques contenant simplement un OS Linux. Problème, j’aimerai utiliser l’EFI au lieu du classique BIOS mais ça ne marche pas. En cherchant sur internet il y a 2 camps : ceux qui disent que c’est impossible avec un RAID logiciel sous Linux et ceux qui bidouille. Moi, je bidouille.

Le RAID logiciel écris par défaut des métadonnées au début de la partition pour identifier et caractériser le RAID justement. Sauf que si on fait ça sur nos belles partitions EFI, ben ce n’est plus une partition FAT32 lisible par l’UEFI et donc ce n’est pas bootable.

La solution est de modifier la version de métadonnées que l’on veut pour ces partitions en 1.0 ce qui va écrire à la fin de la partition. Du coup même en étant un RAID logiciel ces partitions resteront tout à fait lisibles comme des partitions bootables EFI. Parfait.

mdadm -C /dev/md1 --level=1 -n 2 --metadata=1.0 /dev/sda1 /dev/sdb1
mkfs.vfat /dev/md1

Il suffit ensuite de modifier le fichier /etc/fstab en ajoutant (ou modifiant) une ligne avec l’UUID de la partition RAID (via lsblk -f) et en la montant dans /boot/efi/ .

Bon c’est génial, c’est magnifique, champagne. Oui mais non, on a encore 2 soucis :

  • grub-install n’est pas content !
  • si l’UEFI écrit sur une de ces partitions comment on va détecter la différence pour pouvoir assurer une cohérence du RAID au démarrage ?

Bon, pour le deuxième problème là il y a plusieurs pistes mais je n’ai pas de réponse utile à fournir pour l’instant.

Pour le premier problème la réponse est simple : mettez la pression sur les devs de grub. Non mais ils auraient dû prévoir le cas où on aimerait installer le grub sur plusieurs disques à la fois (et donc le cas du RAID 1). Je vous laisse apprécier ce magnifique rapport de bogue chez Debian : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=925591 .

Non en vrai je ne vais pas vous laisser dans le désespoir.

Vérifiez déjà si vous n’avez pas les 2 entrées dans l’UEFI :

grub-install
efibootmgr -v

Si vous n’avez qu’une seule entrée alors on va modifier le comportement de l’installateur pour qu’il n’essaye plus de modifier des variables qu’il ne connaît pas et qu’il ajoute des entrées pour supports amovibles au cas où l’UEFI n’arriverai pas à détecter les partitions.

dpkg-reconfigure -p low grub-efi-amd64

Revérifiez les entrées efi avec efibootmgr et si tout est bon alors vous pouvez redémarrer !