Chapitre 19. Nœuds de périphériques dynamiques avec udev

Table des matières

19.1. Création de règles
19.2. Automatisation avec NAME et SYMLINK
19.3. Expressions régulières dans les codes
19.4. Sélection de codes
19.5. Noms persistants pour périphériques de mémoire de masse

Résumé

Avec le noyau Linux 2.6, il existe une nouvelle solution user space pour un répertoire de périphériques /dev dynamique avec des désignations de périphériques persistantes : udev. Cette solution fournit les fichiers uniquement pour les périphériques réellement présents. Elle crée ou supprime les fichiers nœuds des périphériques distants situés généralement dans le répertoire /dev et elle renomme les interfaces réseau. L'implémentation précédente de /dev avec devfs ne fonctionne plus et est remplacée par udev.

Des nœuds de périphériques (en anglais, device nodes) ont été traditionnellement enregistrés sur les systèmes Linux dans le répertoire /dev. Il existait un nœud pour chaque type de périphérique, indépendamment du fait de savoir s'il existait effectivement dans le système. En conséquence, la taille de ce répertoire devenait importante. On a connu une amélioration sensible avec devfs car seuls les périphériques existant réellement obtenaient un nœud de périphériques dans /dev.

udev s'y prend autrement pour créer des nœuds de périphériques. Il compare les informations mises à disposition par sysfs avec les entrées fournies par l'utilisateur sous forme de règles. sysfs est un nouveau système de fichiers du noyau 2.6. Il donne les informations de base sur les périphériques connectés dans le système. Il est monté sous /sys.

L'utilisateur ne doit pas absolument créer de règles. Si on connecte un périphérique, le nœud de périphérique correspondant est alors créé. Les règles offrent cependant la possibilité de modifier le nom des nœuds. Ceci permet de remplacer le nom cryptique d'un périphérique par un nom de périphérique plus facile à retenir, et de conserver en outre des noms de périphériques persistants si vous avez connecté deux périphériques de même type.

Par défaut, deux imprimantes reçoivent les désignations /dev/lp0 et /dev/lp1. Quel nœud de périphérique est attribué à chacune dépend de l'ordre dans lequel elles ont été mises sous tension. Un autre exemple sont les périphériques de mémoire de masse comme les disques durs USB. Avec la commande udev, on entre les chemins exacts du périphérique dans /etc/fstab.

19.1. Création de règles

Avant que udev crée des nœuds de périphériques sous /dev, il lit, par odre alphabétique, tous les fichiers de /etc/udev/rules.d qui ont le suffixe .rules. La première règle qui convient à un périphérique est utilisée, même s'il en existe d'autres. Les commentaires commencent par le signe #. Les règles ont la forme suivante :

Code, [Code,...] NOM [, SYMLINK]

Un code au minimum doit être indiqué car la règle va être affectée à un périphérique par l'intermédiaire de ce code. Il est également nécessaire de spécifier le nom. Le nœud de périphérique sera établi sous ce nom dans /dev. Le paramètre symlink optionnel permet d'établir des nœuds de périphériques dans d'autres endroits. Une règle pour une imprimante pourrait avoir la forme suivante :


BUS="usb", SYSFS{serial}="12345", NAME="lp_hp", SYMLINK="printers/hp"

Il y a dans cet exemple deux codes : BUS et SYSFS{serial}. udev compare le numéro de série avec celui du périphérique auquel le bus USB est connecté. Tous les codes doivent être identiques afin d'attribuer au périphérique le nom lp_hp dans le répertoire /dev. De plus, un lien symbolique /dev/printers/hp qui renvoie au nœud de périphérique est créé. Dans le même temps, le répertoire printers est créé automatiquement. Les requêtes d'impression peuvent ensuite être envoyées à /dev/printers/hp ou /dev/lp_hp.


SUSE LINUX Guide de l'administrateur 9.2