Hot-plug SATA sur un noyau Linux

Cet article permet de se servir des ports SATA de manière dynamique : branchage, dé-branchage, changement des disques sur les port SATA, ...
Il n'est pas très novateur, mais vu le manque d'information sur le sujet, je me devais de le faire.
Notez que cet article est aussi valable pour les ports eSATA qui sont exactement la même chose, sauf que la prise est en dehors du boitier.

Petit plan :

  1. Vérifions le matériel (notamment la compatibilité avec le noyau)
  2. Paramétrons le BIOS
  3. Problème rencontré (cas de modification d'une installation déjà existante)
  4. Exemple d'utilisation

Vérification du matériel!!

Le matériel doit en effet gérer le hot-plug SATA, ce qui n'est pas le cas de toutes les carte-mère, carte d'acquisition, ou carte RAID, ... De plus, même si le SATA (1) gère le hot-plug dans ces spécifications, rare sont les chipsets SATA (1) prenant en charge cette fonctionnalité.
Ce "petit" tableau permet de connaître la corrélation entre les chipsets, les drivers, et les fonctionnalités disponibles.
Dans mon cas : Intel Coporation 82801HB (ICH8).

Paramétrage du BIOS!!

Comme vous l'avez remarqué, certains chipset peuvent être utilisé avec différents drivers, (notamment la famille des ICH8). Pour le faire fonctionner avec le driver AHCI, il faut l'activer dans le BIOS (attention, si de "vieux" système d'exploitation utilisent aussi le matériel, il se peut qu'ils ne fonctionnent pas en mode AHCI).

Problème rencontré!!

J'ai donc redémarré ma machine, et hop ça marche pas :-(
J'avais droit à une panoplie de petits mots doux du noyau notamment :

unable to access resume device /dev/sda6

(/dev/sda6 est mon disque de SWAP)
Je ne vais pas développer tout ce qui m'est venu à l'idée pour résoudre ce problème, mais je vais passer directement à la solution :
J'ai pris le disque de rescue, et fait :

chroot /mnt/sysimage
mkinitrd -f /boot/initrd-2.6.25.6-55.fc9.x86_64.img 2.6.25.6-55.fc9.x86_64

2.6.25.6-55.fc9.x86_64 étant la dernière version du noyau quand je l'ai fait.
Vous pouvez maintenant redémarrer l'ordinateur :-)
NB : Il est important d'utiliser le CD rescue de même architecture que le système installé.

Exemple d'utilisation!!

Personnellement, j'ai pas mal de disque dur, et un rake SATAx (SATA1 et 2, ...) en façade.
Je voulais pouvoir charger décharger des disques dur à volonté.
Et bien ça marche directement "out of the box" si je débranche un disque il disparaît de /dev ou apparaît dans le cas contraire, de plus HAL (sous Fedora 9, je n'ai pas testé sur d'autres distributions) le gère parfaitement.
NB : si vous voulez vous en servir au même titre qu'une clef USB, lecteur CDRom, ... il est indispensable de ne pas faire référence à ces disques dur dans le fstab ! sinon HAL ne les gèrera pas, et vous pourriez avoir des erreurs au démarrage.