Udev/fr

udev est le gestionnaire de périphériques pour le noyau de Linux. En premier lieu, il gère les nœuds de périphérique dans et prend en charge toutes les actions dans l'espace utilisateur lors de l'ajout ou de la suppression de périphériques. Consultez aussi eudev, une dérivation de udev.

Le répertoire /dev
Lorsque les utilisateurs de Linux parlent du matériel sur leur système à des gens qui pensent que Linux est une sorte de virus ou de marque de café, l'utilisation de "slash dev slash foo" provoquera à coup sûr une sorte d'étonnement. Mais, pour l'utilisateur averti (comme vous) utiliser  est une façon rapide d'expliquer que nous parlons de la première partition du premier disque maître SATA ?

Nous savons tous ce qu'est un fichier de périphérique. Certains savent même pourquoi les fichiers de périphérique possèdent des numéros spéciaux quand ils les regardent de près après avoir exécuté une commande  dans le dossier. Mais ce que nous tenons toujours comme garanti, c'est que le premier disque SATA est référencé comme. Vous pouvez le voir autrement mais cela est un défaut de conception.

Pensez à des périphériques connectables à chaud, comme les périphériques USB et IEE1394, ou les périphériques PCI commutables à chaud, ... Quel est le premier périphérique ? Et pour combien de temps ? Comment les autres périphériques seront-ils nommés quand le premier disparaitra ? Cela sera-t-il amusant si votre tâche d'impression est tout à coup déplacée de votre toute nouvelle imprimante laser vers votre quasi-moribonde imprimante à matrice parce que votre gamin aura tiré sur le cordon d'alimentation de l'imprimante laser qui justement était la première imprimante ?

C'est alors qu'udev fait son entrée. Le but du projet udev est à la fois intéressant et nécessaire :


 * Fonctionne dans l'espace utilisateur
 * Crée/enlève des fichiers de périphérique de manière dynamique
 * Assure un nommage cohérent
 * Fournit une API dans l'espace utilisateur

À chaque fois qu'une modification de la structure des périphériques se produit, le noyau génère un événement uevent qui est intercepté par udev. udev suit alors les règles déclarées dans les répertoires,  et. En se basant sur l'information contenue dans l'événement, il trouve la règle ou les règles dont il a besoin pour déclencher et accomplir les actions requises. Ces actions peuvent être de créer ou de supprimer des fichiers de périphérique, mais elles peuvent aussi déclencher le chargement de micro-logiciels particuliers dans la mémoire du noyau.

Noyau
Vous devez activer les options suivantes du noyau :

Logiciel
Portage connaît l'option globale udev de la variable USE pour activer la prise en charge de udev dans les autres paquets. Activer cette option de la variable USE (par défaut dans tous les profils linux) provoquera l'installation du paquet  automatiquement.

Après les avoir définies vous devez mettre votre système à jour pour que les changements prennent effet :

Service
Pour démarrer udev au démarrage de la machine, ajoutez le au sysinit de votre niveau d'exécution :

Règles
udev fournit un jeu de règles qui correspondent aux valeurs exportées des uevents (événements provoqués par le noyau) et aux propriétés du périphérique découvert. Possiblement, une règle ayant une correspondance nommera et créera  un nœud de périphérique et exécutera des programmes configurés pour installer et configurer le périphérique.

Les définitions des règles sont stockées dans (installé par les paquets) et dans. Dans ces répertoires, de multiples fichiers de règles (suffixés par ) sont parcourus suivant l'ordre alphabétique. À l'intérieur des fichiers de règles, udev trouve des expressions qui correspondent à un uevent accompagné de l'état à faire correspondre (l'événement est-il dû à un ajout ou une suppression) et de la commande à exécuter.

La mise en correspondance de l'événement se base sur des informations telles que :
 * le SOUS-SYSTÈME de l'uevent (pour quel type de périphérique l'événement est-il provoqué)
 * l'ACTION qui a lieu (ajout, changement ou retrait)
 * un ou plusieurs attributs (à travers ATTR ou ATTRS), tels que la classe du périphérique, le vendeur ou tout autre information du périphérique
 * le nom fournit par le noyau (via KERNEL) tel que sd* (pour des disques SCSI/ATA) ou input* (pour les périphériques d'entrée comme les souris et les claviers)
 * un ou plusieurs paramètres d'environnement (via ENV) utilisés pour envoyer des informations partagées par de multiples règles

En se basant sur ces informations, la règle peut alors décider si
 * quelques informations doivent être partagées avec des événements postérieurs (à travers des variables d'environnement)
 * des liens doivent être créés dans
 * des commandes doivent être exécutées

udev accomplit cela pour toutes les règles qui correspondent (il ne cesse donc pas après la première correspondance) pour permettre une approche flexible de la gestion des périphériques.

Noms de périphérique persistants
The kernel detects devices asynchronous, udev mirrors the kernel's sysfs filesystem and so the device are named and numbered in order of detection. So by default udev provides no persistent device names. However there are mechanisms for some device classes to provide these:


 * udev crée, pour les périphériques de stockage, des liens symboliques additionnels en se basant sur l'id du périphérique, son étiquette, son uuid et son chemin (voir le répertoire ) . Ainsi, au lieu d'utiliser, par exemple, le fichier de périphérique utilise le fichier.


 * C'est la même chose pour les périphériques d'entrée dans le répertoire.


 * En utilisant des règles personnalisées, vous pouvez créer votre propre fichier de périphérique.

Utilisation
Quelques commandes utiles :


 * Affiche tous les messages concernant un fichier de périphérique donné :


 * Surveille les activités de udev :

Reportez-vous à la page de manuel de udevadm pour plus d'information.

Journaliser les messages de surveillance
Journalise tous les messages que vous voyez, lorsque vous exécutez la commande udevadm monitor :

Cela créera le nouveau journal.

Mode de déverminage
Activer le mode de déverminage pour obtenir plus de messages journalisés :

Set the logging priority:

The log file will be created but no messages will be logged to it. The most recent versions of udev will log all messages to dmesg.

Fichiers de périphériques manquants et
Quelques versions de udev ont besoin de ces fichiers et ne peuvent pas les créer elles-mêmes. Il vous faut donc les créer :

NIC (Carte interface réseau) désignée comme eth0, mais a été déplacée en eth1
Those having dual network cards on their motherboards may run into a situation where ifconfig may show no eth0 or eth1. dmesg may show their NIC detected as eth0, and later moved to eth1. Performing a ifconfig -a will also show the NIC as eth1. This is caused by using the kernel assigned names in the first place. Users should write custom rules like to use free names like lan0 or wireless0 or use predictable interface names (which have been enabled by default since udev version 197).

Pensez aussi à retirer les anciens fichiers des versions antérieures de udev :

External resources

 * udev source code