Udev/fr

udev est le gestionnaire de périphériques pour le noyau de Linux. Il gère les nœuds de périphériques dans et prend en charge toutes les actions dans l'espace utilisateur lors de l'ajout ou de la suppression de périphériques. Les lecteurs de cet article devraient également lire 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 utiliser  est une façon rapide de référencer la première partition du premier disque maître SATA. Facile, non ?

La plupart des utilisateurs de Linux savent 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é la commande  dans le dossier. Ce que les utilisateurs prennent pour acquis, c'est que le premier disque SATA est référencé comme. Quelques utilisateurs peuvent 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, etc. 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 disparaîtra ? Comment cela affectera les opérations en cours ? Cela sera-t-il amusant si une tâche d'impression est tout à coup déplacée d'une toute nouvelle imprimante laser vers une quasi-moribonde imprimante à matrice parce que quelqu’un aura tiré sur le cordon d'alimentation de l'imprimante laser qui était justement la première imprimante ?

Apparaît. Le but du projet udev est à la fois intéressant et nécessaire. Udev :


 * Fonctionne dans l'espace utilisateur;
 * Crée et 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. 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 micrologiciels particuliers dans la mémoire du noyau.

Noyau
nécessite les options suivantes dans le noyau :

Options de la variable USE
Portage connaît l'option globale 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 profiles Linux) provoquera l'installation du paquet automatiquement.

Emerge
Après avoir défini les options de la variable USE, mettre à jour le système pour que les changements prennent effet :

Service
Pour démarrer udev au démarrage de la machine, l'ajouter au niveau d'exécution sysinit. Pour cela, exécuter la commande suivant en tant que root :

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 à deux emplacements :


 * 1)  - Les règles dans ce répertoire sont installées par certains paquets, elles ne doivent en général pas être modifiées par les utilisateurs;
 * 2)  - Ce répertoire est pour les règles définies par les utilisateurs. Chaque nouvelle règle doit être ajoutée dans ce répertoire;;

Dans ces répertoires, de multiples fichiers de règles (avec le suffix ) sont lus dans l'ordre alphabétique. Dans ces fichiers, udev trouvera des expressions qui peuvent correspondre à un événement uevent avec l'état correspondant (est-ce que l’événement correspond à un ajout ou une suppression de périphérique) et la commande à exécuter.

La mise en correspondance de l'événement se base sur des informations telles que :


 * The SUBSYSTEM of the uevent (for which type of device is the uevent fired);
 * The ACTION that is taken (add, change, or remove);
 * One or more attributes (through ATTR or ATTRS), such as the device class, vendor or other device information;
 * The kernel-provided name (through KERNEL), such as sd* (for SCSI/SATA disks) or input* (for input devices such as mice and keyboards);
 * One or more environment settings (through ENV), used to send information between multiple rules.

Based on this information, the rule can then state if:


 * 1) Some information needs to be shared with later events (through environment variables)
 * 2) Links need to be created in
 * 3) Commands need to be executed

Udev does this for every rule that matches (it does not stop after the first match) to allow a flexible device management approach.

Noms de périphérique persistants
The kernel detects devices asynchronously, udev mirrors the kernel's sysfs filesystem and so the devices 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 creates for storage devices additional symlinks based on the device's ID, label, UUID and path. See the directory. So instead of using e.g. the device file  use the file.


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


 * Using custom rules enables users to create their own device files.

Utilisation
Quelques commandes utiles :


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


 * Surveille les activités de udev :


 * Assign a persistent name to an ethernet device:

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

Journaliser les messages de surveillance
To log all message when is ran, modify the following configuration file:

It will create the new log file located at

Mode de déverminage
Enabling debug mode will output more log messages:

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.

Fichiers de périphériques manquants et
Some udev versions need the and  files in order to work properly, but can not create them on their own. To manually create these files for udev run the following commands with root privileges:

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 may show no eth0 or eth1. may show their NIC detected as eth0, and later moved to eth1. Performing 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
- Default virtual/udev provider changed to sys-fs/eudev