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"
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
L'option last_rule empêche l'application des règles suivantes sur le périphérique.
KERNEL=="sda", GROUP="disk", OPTIONS+="last_rule"
udev permet de définir pour le fichier node associé au périphérique le propriétaire et les droits d’accès
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
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