Activer le support RAID logiciel (mdadm) sur GLF-OS

Caution

⚠️ Attention : ce guide modifie l'initrd de votre système. Une mauvaise configuration peut empêcher votre machine de démarrer. Sauvegardez vos données avant tout test et gardez à portée de main une clé USB GLF-OS pour la récupération. ⚠️


Contexte / Context

Par défaut, GLF-OS ne charge pas les modules mdadm/dm_mod dans l'initrd. Ce choix permet de garder une initrd la plus légère possible (~5 à 10 Mo gagnés), et la grande majorité des utilisateurs n'utilise pas de RAID logiciel sur la partition racine.

Si vous avez un setup avec un rootfs sur un volume md (RAID logiciel mdadm), vous devez activer explicitement le support en stage 1 sinon le démarrage échoue avec une erreur de type "cannot find device /dev/md0" dans l'écran de récupération.

Cas typiques où activer cette option :

Si votre setup utilise uniquement des disques simples ou ZFS, vous n'avez pas besoin d'activer ce module.


Comment activer mdadm dans l'initrd

1 — Ouvrez /etc/nixos/customConfig/default.nix

L'outil Éditeur de texte de GNOME (ou n'importe quel éditeur) convient. Le fichier contient déjà des exemples commentés.

2 — Décommentez la ligne boot.swraid.enable

Cherchez la section :

# Activer le support RAID logiciel (mdadm) — nécessaire si votre rootfs est sur un volume md0/md1...
# Pousse dm_mod + raid* dans l'initrd. Voir : /materiel/raid-mdadm
  # boot.swraid.enable = true;

Retirez le # devant boot.swraid.enable :

  boot.swraid.enable = true;

3 — (Optionnel) Configurer les notifications mdadm

boot.swraid active le service mdmon qui surveille l'état du RAID. Pour recevoir un mail si un disque tombe, ajoutez à la suite :

  boot.swraid.mdadmConf = ''
    MAILADDR vous@example.com
  '';

4 — Appliquer la configuration

sudo glf-update

Au prochain démarrage, l'initrd contiendra dm_mod + les modules raid0/raid1/raid456 nécessaires, et votre rootfs RAID sera assemblé correctement.


Cas particulier : ajouter d'autres modules à l'initrd

Si vous avez besoin de pousser d'autres modules kernel dans l'initrd (rootfs Btrfs en RAID5/6, NBD, modules réseau exotiques pour un remote-decrypt LUKS, etc.), utilisez l'option boot.initrd.kernelModules :

# Dans /etc/nixos/customConfig/default.nix
  boot.initrd.kernelModules = [ "btrfs" "nbd" ];

Cette option étend (et ne remplace pas) la liste déjà fournie par GLF-OS — vos modules s'ajoutent à amdgpu (sur AMD), i915/xe (sur Intel via Calamares), etc.


Désactiver le support après coup

Si vous l'aviez activé mais que vous n'en avez plus besoin (machine repassée sur disque simple), recommentez ou supprimez la ligne :

  # boot.swraid.enable = true;

Puis sudo glf-update. Au prochain reboot l'initrd ne contiendra plus mdadm.


Diagnostic / Troubleshooting

Vérifier ce que contient votre initrd actuel :

sudo nix --extra-experimental-features "nix-command flakes" eval \
  /etc/nixos#nixosConfigurations.GLF-OS.config.boot.initrd.kernelModules

Vous devez voir dm_mod dans la liste si boot.swraid.enable = true a bien été appliqué.

Le système démarre en mode récupération sur "device not found" : vérifiez que boot.swraid.enable = true; a bien été décommenté, puis relancez sudo glf-update depuis la console de secours et rebootez.

Tester l'état du RAID après démarrage :

cat /proc/mdstat
sudo mdadm --detail /dev/md0