Table des matières
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.
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.