Montage automatique de périphériques amovibles

Comment assurer le montage automatique d'une clé USB et d'un appareil numérique ? La première étape est de donner toujours le même nom de périphérique à un matériel donné. Nous avons besoin pour cela d'utiliser Udev et Hotplug, disponibles dans toutes les distributions récentes à noyau 2.6.

La seule chose qui reste alors à faire est d'automatiser le montage et le démontage du périphérique. Plusieurs solutions existent pour ce faire ; nous utiliserons Autofs qui a l'avantage, contrairement à Hotplug, de ne pas nécessiter un noyau 2.6.

Les choix

La clé USB sera montée dans le dossier /media/cle et l'APN, un Panasonic LC-33, dans /media/lc33.

Identification du matériel

Elle est dévolue à Udev. Il faut simplement savoir que les périphériques de stockage USB sont vus généralement comme un disque SCSI c'est à dire, s'il n'en existe pas déjà un fixe sur votre système, /dev/sda (nom du premier disque SCSI). Sinon, voir /dev/sdb, /dev/sdc, etc...

En fait, on monte la première partition de ces disques, soit /dev/sda1, /dev/sdb1, /dev/sdc1, etc... Attention : dans le cas où les supports mémoire concernés n'ont qu'une seule partition.

Le problème est que ces noms peuvent changer à chaque fois, car il dépendent de plusieurs conditions :

Voyons donc comment identifier la clé USB. Ce ne sera possible que si le module usb-storage est chargé, soit manuellement, soit automatiquement (très probable avec un noyau 2.6).

Par la commande /sbin/fdisk -l, vous obtenez la liste des partitions matériellement reconnues par votre système. Supposons que vous avez reconnu votre clé dans le «disque» /dev/sda contenant une unique partition /dev/sda1.

Par la commande udevinfo -a -p /sys/block/sda/, on relève des informations qui peuvent être plus ou moins précises (marque ou type de périphérique) ou, à l'inverse, uniques (numéro de série). Cette commande tapée dans un terminal me révèle SYSFS{model}="USB Flash Disk " si je regarde dans la rubrique BUS="scsi" et son numéro de série si je regarde dans BUS="usb". Comme je ne souhaite pas que n'importe qui puisse réliser un montage automatique de sa clé sur ma machine, je choisis plutôt la référence au numéro de série.

Les règles Udev que j'ai retenues sont :

BUS="usb", KERNEL="sd?1", SYSFS{serial}=="20030926xxxxxx*", SYMLINK="cle"
BUS="usb", KERNEL="sd?1", SYSFS{product}=="DMC-LC33", SYMLINK="lc33"

que j'ai enregistrées dans le fichier 00-perso.rules, à placer dans le dossier /etc/udev ou /etc/udev/rules.d.

Pour adapter ces règles, il vous suffit de regarder dans la sortie de udevinfo la caractéristique qui vous parait la plus pertinente selon le but recherché. Si vous voulez que seul votre exemplaire soit montable, vous indiquerez son numéro de série ; si vous voulez monter n'importe quel exemplaire du même modèle, contentez vous des vendor et product en hexadécimal révélés par la commande udevinfo ou, plus simplement, par lsusb. De telles indications sont à reporter dans SYSFS{idVendor} et SYSFS{idProduct}. Les caractères de substitution (*, ? etc...) sont utilisables.

La partie la plus intéressante est sans doute SYMLINK="cle" qui signifie que quel que soit l'emplacement effectif de ce périphérique (ce que Udev appelle nom noyau), un lien symbolique sera créé en /dev/cle pour la clé et en /dev/lc33 pour l'APN.

Montage semi-automatique

En attendant de parvenir à gérer le montage automatique de ces périphériques, on peut toujours rajouter dans /etc/fstab :

/dev/cle        /media/cle      vfat    rw,user,noauto,sync 0   0
/dev/lc33       /media/lc33     vfat    rw,user,noauto,sync 0   0

ce qui permet au moins de monter le périphérique avec toujours la même ligne de commande et donc de créer sans autre forme de procès une icône dédiée à chacun de vos périphériques, même dans un environnement ne possédant aucun mécanisme de montage automatique.

Ces lignes deviennent inutiles dès que votre montage automatique est fiable.

Montage automatique à l'ancienne

À l'ancienne car on fera appel ici à autofs, daemon de montage disponible même dans des distributions un peu datées, comme par exemple la Debian 3.0 Woody.

Après avoir installé ce paquet, vous pouvez rajouter (ou laisser seule) la ligne suivante dans /etc/auto.master :

/media	/etc/auto.media --timeout=3

Elle veut dire que des périphériques montables dans des sous-dossiers de /media sont gérés dans le fichier de configuration /etc/auto.media. Lequel contient justement les lignes :

cle	-fstype=vfat,umask=000,sync	:/dev/cle
lc33	-fstype=vfat,umask=000,sync	:/dev/lc33

Ces deux fichiers, à eux deux, indiquent que le périphérique /dev/cle sera monté dans /media/cle et /dev/lc33 dans /media/lc33. Et montés automatiquement, dès que l'on tentera d'accéder au dossier de montage prévu... Un simple cd /media/cle en console suffit à assurer le montage.

En mode graphique, un simple raccourci suffit, que ce soit dans le plus miséreux des navigateurs de fichiers ou dans un environnement qui ne gère pas lui-même le montage des périphériques. Le démontage sera lui aussi automatique au bout de 3 secondes, délai suffisant après extinction de la diode de la clé, suite à un transfert de fichiers.