udev : le gestionnaire de périphériques de Linux

malekalmorte

Création :

24 avril 2021

Modification :

udev est le gestionnaire de périphériques de Linux apparu dans le nouveau 2.6.
Il remplace l’ancien système devfsd et hotplug et fusionne certains éléments de HAL (Hardware Abstraction Layer) devenu obsolète.

C’est donc un daemon/service qui permet le branchement à chaud de périphériques et la reconnaissances de nouveaux matériels sur Linux.
Cela concerne n’importe quel type de matériel comme une carte réseau, des disques durs externes (y compris des clés USB), des souris, des claviers, des manettes de jeu et des manettes de jeu, des lecteurs de DVD-ROM, etc.

Ce tutoriel vous explique ce qu’est udev et vous présente le fonctionnement général d’udev sur Linux.

udev : le gestionnaire de périphériques de Linux

Le répertoire /dev et Sysfs

/dev/

Dans Linux, les périphériques sont stockés sous la forme de fichiers dans Sysfs.
On nomme ces derniers des noeuds (nodes).
/dev est un système de fichiers virtuels qui stockent des fichiers spéciaux (special file) et des fichier de périphérique (device file).

Par exemple, on trouve /dev/nvmeX pour les périphériques NVMe, /dev/sda pour les périphériques PATA/SATA, USB.
Mais on trouve d’autres aussi des fichiers spéciaux comme /dev/null pour le rejet d’entrée ou /dev/random un générateur de nombres aléatoires.

devfs était l’implémentation de ce système de fichiers virtuels jusqu’au noyau 2.6. udev a alors pris sa place.
Auparavant les fichiers dans /dev étaient statiques, avec le gestionnaire de périphériques Linux udev fournit dynamiquement uniquement les nœuds pour les périphériques réellement présents sur un système

Sysfs et /proc/sys/

sysfs est un pseudo système de fichiers introduit dans le noyaux Linux 2.5.
Il expose à l’utilisateur différentes informations provenant du noyau et notamment les périphériques matériels et les pilotes de périphériques associés du modèle de périphérique du noyau à l’espace utilisateur via des fichiers virtuels.

Udev dépend de ce système de fichiers sysfs qui rend les périphériques visibles dans l’espace utilisateur.
Lorsqu’un périphérique est ajouté ou supprimé, des événements du noyau sont produits qui avertiront Udev dans l’espace utilisateur.

udev : le gestionnaire de périphériques de Linux

Qu’est-ce que udev ?

L’udev, dans son ensemble, est divisé en trois parties:

  • Bibliothèque libudev qui permet d’accéder aux informations de l’appareil
  • Daemon/service de l’espace utilisateur udevd qui gère /dev et s’active donc au démarrage de Linux
  • Utilitaire de ligne de commande d’administration udevadm pour les diagnostics.

D’autres daeon utilisent la bibliothèque libudev.
Par exemple, NetworkManager est un daemon qui se trouve au-dessus de libudev et d’autres interfaces du noyau Linux pour la configuration des interfaces réseau.
C’est aussi le cas de udisks et upower.

udev prend en charge la dénomination des périphériques persistants.
Par exemple, tout disque dur est reconnu par un identifiant unique, si vous changez l’ordre des périphériques, udev gardera les mêmes noms.
Ce n’était pas le cas avant avec devfs. Lorsque vous aviez trois disques, si vous en enleviez un, cela pouvait décaler les lettres de lecteurs.
De même avec les cartes réseaux eth0, eth1.

Enfin udev donne plus de pouvoir à l’utilisateur qui peut interagir avec les périphériques à travers des règles.
Par exemple, ce dernier :

  • changer ou figer le nom assigné par défaut à un périphérique
  • attribuer des permissions et autorisations sur l’utilisation d’un périphérique
  • exécuter un script lors de la connexion ou déconnexion d’un périphérique

Comment fonctionnent la détection de nouveaux périphériques ?

Le daemon udev écoute le socket netlink que le noyau utilise pour communiquer avec les applications de l’espace utilisateur.
Le noyau envoie un tas de données via le socket netlink lorsqu’un périphérique est ajouté ou supprimé d’un système.
Le démon Udev récupère toutes ces données et les traite pour effectuer les opérations nécessaires à l’ajout d’un nouveau matériel.
Par exemple, la création du nœud de périphérique, le chargement du module du noyau, etc.

Les règles udev

Les règles udev permettent de paramétrer des actions spécifiques lors de l’insertion ou la découverte d’un périphérique par Linux.
Le tutoriel suivant vous explique comment en créer :

Liens

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.