Chapitre 7. Noms de périphériques déterminés par l'utilisateur

Le répertoire /dev/ contient des fichiers virtuels qui représentent des périphériques. Chaque fichier virtuel représente un périphérique du système tel qu'un périphérique de stockage, un périphérique USB ou une imprimante. On appelle ces fichiers virtuels des noms de périphériques.

Les noms des périphériques IDE commencent par hd et ceux des périphériques SCSI par sd. Le préfixe est suivi par une lettre, à partir de la lettre a, représentant l'ordre des disques. Par exemple, /dev/hda correspond au premier disque dur IDE, /dev/hdb au deuxième disque dur IDE, /dev/hdc au troisième, et ainsi de suite.

Si un nom de périphérique est suivi d'un nombre, ce dernier représente le numéro de la partition. Par exemple, /dev/hda1 correspond à la première partition sur le premier disque IDE.

Si un disque dur est physiquement déplacé vers un emplacement différent dans l'ordinateur, s'il est enlevé ou s'il ne peut être initialisé, certains noms de périphérique changeront rendant par là-même des références aux noms de périphérique potentiellement non valides. Par exemple, comme le montre la Figure 7-1, si un système dispose de trois disques durs SCSI et que le deuxième disque dur est retiré, /dev/sdc devient /dev/sdb. En raison de ce changement, toute référence à /dev/sdc n'est plus valide de même que toute référence à /dev/sdb puisqu'il s'agit désormais d'un disque différent.

Figure 7-1. Suppression d'un disque dur

Chaque disque dur est reconnaissable par un identifiant unique que l'on appelle UUID. Afin de résoudre le problème associé au changement de noms de périphériques, devlabel prend en compte les noms de périphériques définis par l'utilisateur qui sont associés à ces UUID. Un lien symbolique est créé du nom de périphérique défini par l'utilisateur vers le nom de périphérique réel. Si le nom de périphérique réel change, le lien symbolique est mis à jour afin qu'il renvoie au même périphérique en fonction de son UUID. Ainsi, les périphériques de stockage, qu'ils soient de type IDE ou SCSI, peuvent être référencés d'après leurs noms définis par l'utilisateur.

devlabel prend aussi en compte le montage automatique à chaud de périphériques (hotplug) tels que des disques durs amovibles et des périphériques USB comme des cartes mémoire pour des appareils photos numériques. Si le périphérique est configuré de manière à être monté automatiquement, une fois branché, il est monté avec le nom de périphérique défini pas l'utilisateur.

7.1. Configuration de devlabel

Des noms de périphériques définis par l'utilisateur peuvent être ajoutés en fonction du nom du périphérique, du nom de la partition ou de l'UUID du disque.

Utilisez la syntaxe suivante pour ajouter un nom de périphérique défini par l'utilisateur au périphérique de stockage. Le périphérique spécifié peut être le périphérique dans sa totalité ou une seule partition sur le péripérique.

devlabel add -d <device> -s <symlink>

Par exemple, pour ajouter le lien symbolique /dev/work qui représentera la partition /dev/hdb1, utilisez la commande suivante :

devlabel add -d /dev/hdb1 -s /dev/work

Si la commande utilisée a fonctionné, l'extrait suivant apparaîtra :

Created symlink /dev/work -> /dev/hdb1
Added /dev/work to /etc/sysconfig/devlabel

Pour ajouter un nom de périphérique pour un périphérique basé sur un UUID, utilisez la syntaxe suivante :

devlabel add -u <uuid> -s <symlink>

Pour utiliser devlabel en vue de rechercher l'UUID pour un périphérique (ou s'assurer qu'il en a bien un), utilisez la commande suivante :

devlabel printid -d <device>

Les noms des différents liens symboliques doivent être uniques. Si un lien symbolique existe déjà et que l'utilisateur essaie de l'ajouter, aucune modification n'est apportée au fichier de configuration et les éléments suivants apparaissent :

The file /dev/work already exists.
Failure. Could not create a symlink.

Pour supprimer un lien symbolique de la liste devlabel, utilisez la commande suivante :

devlabel remove -s <symlink>

L'entrée est retirée du fichier de configuration et le lien symbolique est supprimé.

Afin de déterminer l'état des liens symboliques de devlabel, utilisez la commande suivante :

devlabel status

Cette dernière renvoie une sortie semblable à l'extrait suivant :

lrwxrwxrwx    1 root            9 Apr 29 13:20 /dev/work -> /dev/hdb1
lrwxrwxrwx    1 root            9 Apr 29 13:41 /dev/tcf -> /dev/hda1

7.1.1. Périphériques hotplug

Un programme portant le nom hotplug effectue ces opérations lorsqu'un événement système tel que l'ajout ou la suppression de matériel, se produit alors que le système tourne. Par exemple, si un disque dur USB ou un lecteur de carte mémoire USB est relié au système, hotplug notifie les utilisateurs en enregistrant un message dans le fichier journal du système (/var/log/messages) et charge les modules noyau appropriés afin que le périphérique puisse fonctionner.

Lorsqu'un périphérique PCI, USB ou IEEE 1394 (aussi connu sous le nom FireWire) est branché, les scripts hotplug relancent également devlabel afin que le support de stockage amovible se voit attribuer un nom de périphérique défini par l'utilisateur (tel que /dev/usbcard), et de manière optionnelle, il peut monter automatiquement le périphérique de stockage.

Après l'insertion du lecteur de cartes USB dans le port USB de l'ordinateur, exécutez la commande suivante en étant connecté en tant que super-utilisateur (où /dev/sda1 correspond au nom de périphérique de la carte mémoire et /dev/usbcard au nom de périphérique défini par l'utilisateur devant être utilisé) :

devlabel add -d /dev/sda1 -s /dev/usbcard --automount

Cette commande ajoute une entrée concernant le point de montage dans /etc/sysconfig/devlabel et crée un lien symbolique de /dev/usbcard vers /dev/sda1. L'option --automount dans devlabel spécifie que le périphérique devrait être automatiquement monté lorsque devlabel redémarre, si une de ses entrées se trouve dans /etc/fstab et si le périphérique existe (c-à-d lorsque le système trouve un périphérique ayant le même UUID).

Le programme updfstab scanne les bus IDE et SCSI des nouveaux périphériques et ajoute les entrées les concernant dans /etc/fstab, si ces dernières n'existe pas encore. Il ajoute également des entrées pour les périphériques USB puisqu'ils apparaissent en tant que périphériques SCSI. Reportez-vous à la page de manuel relative à updfstab pour obtenir de plus amples informations.

Lors de l'insertion d'un périphérique USB, hotplug lance le programme updfstab qui ajoute dans le fichier /etc/fstab une entrée relative au périphérique de stockage (tel que la carte mémoire) si il existe. (Si un lecteur de cartes ne contenant pas de carte est inséré, aucune entrée n'est ajoutée.) La ligne ajoutée contient le nom du périphérique réel (tel que /dev/sda1) et l'option kudzu. L'option kudzu indique à Kudzu [1] qu'il peut effacer la ligne si le périphérique n'existe pas. Puisque devlabel a besoin de cette ligne, l'option kudzu doit être supprimée afin que la ligne demeure dans le fichier. Il est également nécessaire de changer le nom de périphérique au profit du nom de périphérique devlabel (tel que /dev/usbcard) et de créer le point de montage (tel que /mnt/usbcard).

Après avoir modifié la ligne, elle devrait ressembler à l'extrait suivant :

/dev/usbcard   /mnt/usbcard   auto    noauto,owner 0 0

En raison de --automount, lorsque devlabel est redémarré, le support de stockage dans le périphérique du lecteur de cartes USB est monté dans /mnt/usbcard lorsque le périphérique USB est branché dans l'ordinateur. L'astuce consiste à insérer la carte dans le lecteur de cartes USB, avant de le brancher dans l'ordinateur. Si la carte n'est pas préalablement dans le lecteur, devlabel ne peut pas détecter le périphérique de stockage et n'est par conséquent pas en mesure de le monter automatiquement.

Si le lecteur de cartes USB est déjà branché sans contenir de carte, lors de l'insertion de cette dernière, exécutez en tant que super-utilisateur la commande devlabel restart pour monter la carte mémoire.

Notes

[1]

Kudzu est un outil de détection du matériel qui est lancé au démarrage afin de déterminer le matériel ajouté ou retiré du système.