Table des matières

, , , ,

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].

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.

$ 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