Udev - Guide d’utilisation et Règles
udev est un gestionnaire dynamique de périphériques sous Linux. Il automatise la gestion des périphériques en exécutant des actions prédéfinies lors d’événements tels que l’ajout, la suppression ou le changement d’état d’un périphérique. Cela inclut la configuration des permissions, l’exécution de scripts personnalisés et la création de noms persistants pour les périphériques.
Ce guide couvre :
Les commandes utiles pour identifier et gérer les périphériques.
La création et le test des règles udev.
Les meilleures pratiques pour configurer des périphériques utilisateur..
udev est un outil clé pour garantir une gestion cohérente et automatisée des périphériques dans un environnement Linux.
Commandes Utiles
Identifier un périphérique USB avec lsusb
La commande lsusb affiche les périphériques USB connectés. Elle est utile pour identifier un périphérique par son identifiant idVendor, idProduct, et parfois son numéro de série (Serial) :
lsusb -v | grep -E 'idVendor|idProduct|Serial'
Exemple de sortie :
idVendor 0781 SanDisk Corp.
idProduct 5583 Ultra USB 3.0
Serial 1234567890ABCDEF
Pour localiser un périphérique à partir de cet identifiant, utilisez :
udevadm info --query=property --name=/dev/bus/usb/001/004
Cela fournit des informations détaillées sur le périphérique.
Explications des options des règles Udev
Options des règles
Voici les principales options utilisées dans les règles udev et leur signification :
Option |
Description |
---|---|
SUBSYSTEM== |
Spécifie le type de périphérique concerné (ex. usb, block, net). |
ACTION== |
Définit l’action à laquelle la règle doit répondre (add, remove, change). |
ATTR{} |
Attribut spécifique d’un périphérique (ex. idVendor, idProduct, serial). |
ENV{} |
Variable d’environnement associée au périphérique. |
RUN+= |
Exécute une commande ou un script. |
SYMLINK+= |
Crée un lien symbolique vers le périphérique. |
OWNER= |
Définit le propriétaire du fichier de périphérique. |
GROUP= |
Définit le groupe du fichier de périphérique. |
MODE= |
Définit les permissions du fichier de périphérique. |
Actions Udev
Les actions courantes dans udev sont :
Action |
Description |
---|---|
add |
Déclenchée lorsque le périphérique est connecté. |
remove |
Déclenchée lorsque le périphérique est retiré. |
change |
Déclenchée lorsque le périphérique change d’état (ex. un volume monté). |
Explication des paramètres %k et autres
Dans les règles udev, certaines variables dynamiques peuvent être utilisées :
Variable |
Description |
---|---|
%k |
Nom du périphérique du noyau (ex. sda, ttyUSB0). |
%p |
Chemin physique du périphérique dans /sys. |
%n |
Numéro du périphérique (ex. 1 pour sda1). |
%b |
Nom du périphérique de base (ex. sda pour sda1). |
Créer des Règles Udev
Exemple 1 : Attribuer un nom statique à une clé USB
Si une clé USB est connectée sous /dev/sdb mais change de nom à chaque démarrage, vous pouvez créer une règle udev pour lui attribuer un lien symbolique statique.
Identifiez les attributs de la clé USB :
udevadm info --attribute-walk --name=/dev/sdb
Exemple d’attributs :
KERNEL=="sdb"
SUBSYSTEM=="block"
ATTRS{idVendor}=="0781"
ATTRS{idProduct}=="5583"
ATTRS{serial}=="1234567890ABCDEF"
Créez la règle /etc/udev/rules.d/85-usb-key.rules :
KERNEL=="sd[b-z]*", SUBSYSTEM=="block", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="5583", ATTRS{serial}=="1234567890ABCDEF", SYMLINK+="usb-key"
Rechargez les règles et déconnectez/reconnectez la clé USB :
sudo udevadm control --reload-rules
sudo udevadm trigger
Exemple 2 : Exécuter un script lors de l’ajout ou du retrait d’un périphérique USB
Pour exécuter un script lorsque certains événements (add, remove) se produisent sur un périphérique USB, suivez ces étapes :
Créez la règle /etc/udev/rules.d/99-usb-scripts.rules :
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0781", ATTR{idProduct}=="5583", ATTRS{serial}=="1234567890ABCDEF", RUN+="/path/to/script.sh add %k"
ACTION=="remove", SUBSYSTEM=="usb", RUN+="/path/to/script.sh remove %k"
Créez le script /path/to/script.sh :
#!/bin/bash
ACTION="$1"
DEVNAME="$2"
logger "Action udev détectée : $ACTION pour le périphérique $DEVNAME"
Rendez le script exécutable :
chmod +x /path/to/script.sh
Rechargez les règles :
sudo udevadm control --reload-rules
sudo udevadm trigger
Remarque importante : Gestion des événements remove
Lors d’un événement remove, les attributs du périphérique (comme idVendor, idProduct ou serial) ne sont plus disponibles. Vous devez utiliser les informations disponibles avant la suppression ou les variables dynamiques comme %k.
Débogage et Bonnes Pratiques
Logs pour udev
Pour suivre les journaux udev, consultez /var/log/syslog ou /var/log/messages :
tail -f /var/log/syslog
Meta
Auteur : Cbillet Date : 26/11/2024