Outils pour utilisateurs

Outils du site


sysadmin:linux:udev

udev

Les fichiers de règles se trouvent dans le répertoire /etc/udev/rules.d, le nom du fichier est suffixé par .rules. Les règles sont évaluées fichier par fichier par ordre alphabetique. Pour forcer l’évaluation de certaines règles en priorité on utilise des numéro en préfixe dans les nom de fichiers. Par convention les règlés personnalisées sont dans /etc/udev/rules.d/XX-local.rules ou XX correspond a un nombre de l'intervalle [0-99].

  • Pour commenter, commencer la ligne avec le caractère #.
  • Une règle sur une ligne: pas de retour chariot au milieu de la définition d'une règle.
  • La règle contient une ou plusieurs clefs de correspondances et une ou plusieurs clefs d'affectation séparées par des virgules.

Ci dessous un exemple de règle

# Le retrait d'un périphérique particulier du système hôte provoque l’exécution d'un script
ACTION=="remove", ENV{ID_MODEL}=="TS2GJF110", ENV{ID_FS_UUID}=="6CE8-0F2C", RUN+="/usr/local/bin/test_remove.sh"

Rechercher les attributs d'un node

Certains attributs exportés par les pilotes dans sysfs. La commande udevadmn permet de lister ces attributs existants pour le périphérique. Rechercher d'abord le périphérique dans /sys:

$ find /sys -name sdb

Une fois le chemin identifié, le chemin est passé en argument à l'option -p de la commande udevadmn pour afficher l'ensemble des attributs liés au périphérique:

$ sudo udevadmn info -a -p /sys/block/sdb

Les attributs listés par la commande ci-dessus pourront être utilisés comme clefs de correspondance lors de la création de règles personnalisées.

# création d'un lien symbolique pour le node sdb
ATTRS{idVendor}=="0bda" ATTRS{idProduct}=="0158", SYMLINK+="card_reader" 

On peut également utiliser directement l'option -n et le chemin du fichier node en argument

$ udevadm info -a -n /dev/sdb

Options

L'option last_rule empêche l'application des règles suivantes sur le périphérique.

KERNEL=="sda", GROUP="disk", OPTIONS+="last_rule"

Droits d'accès

udev permet de définir pour le fichier node associé au périphérique le propriétaire et les droits d’accès

 

Prise en compte des modifications

udev ne remonte pas automatiquement le périphérique mais se charge d'appliquer les règles lorsqu'il est détecté. C'est le noyau qui détecte les périphérique et appelle udev. Si le noyau supporte inotify, il surveille les fichiers de règles et prends en compte automatiquement les modifications apportées.

  • Si la règle concerne un périphérique déjà branché, débrancher/rebrancher le périphérique pour provoquer la détection du matériel par le noyau et l'appel de udev pour l'application de la nouvelle règle.
  • Si le périphérique ne peut pas être débranché facilement exécuter udevtrigger
$ sudo udevtrigger

Tester les règles

udevadm ou udevtest permettent de tester les nouvelles règles:

$ udevadm test -p /sys/block/sdb

Pour afficher l'environnement et les événements dans la console:

sudo udevadm monitor --environment --udev

Références

sysadmin/linux/udev.txt · Dernière modification : 2021/02/01 21:51 de 127.0.0.1