Richard Bruno
navigation
Home
admin









Udev
October 18th, 2016

/etc/udev/rules.d et /lib/udev/rules.d/50-udev-default.rules



Pour décider comment nommer un périphérique et quelles actions faire, udev utilise une série de fichiers de règles. Ces fichiers se trouvent dans le répertoire /etc/udev/rules.d, et doivent tous avoir l'extension .rules. Les règles udev créées par défaut sont dans le fichier /lib/udev/rules.d/50-udev-default.rules. Il pourrait être intéressant d'y jeter un œil – il contient quelques exemples -, et certaines règles contiennent un exemple de sortie de devfs que vous trouverez dans /dev par défaut. Cependant, il est conseillé de ne pas écrire de règle directement dedans.

Source : http://doc.ubuntu-fr.org/udev


Udev automatically detects changes to rules files, so changes take effect immediately without requiring udev to be restarted. However, the rules are not re-triggered automatically on already existing devices. Hot-pluggable devices, such as USB devices, will probably have to be reconnected for the new rules to take effect, or at least unloading and reloading the ohci-hcd and ehci-hcd kernel modules and thereby reloading all USB drivers.

udevadm control --reload-rules





Source : https://wiki.archlinux.org/index.php/udev#List_attributes_of_a_device

Informations sur un device



Pour identifier un périphérique par le numéro du vendor, le nom exact du produit, le numéro de série, la capacité de stockage, le nombre de partitions, etc. Certains pilotes exportent ces informations dans le sysfs et udev vous permet d'utiliser ces informations pour vos propres règles.

root@netmasterpo-04:/etc/# udevadm info --name=/dev/sdb --attribute-walk

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/host9/target9:0:0/9:0:0:0/block/sdb':
KERNEL=="sdb"
SUBSYSTEM=="block"
DRIVER==""
[...]



Cette commande permet de voir toute l'arborescence des devices.

Source : http://doc.ubuntu-fr.org/udev


Monitorer udev



udevadm monitor --environment --udev



Création d'une règle udev



ATTR vs ATTRS

ATTR only looks at the node being added (And the vendor and model info isn’t available at this – the partition – level) whilst ATTRS searches up the tree.

ACTION=="add"

Si on ajoute la règle ACTION=="add", la commande udevadm trigger n'activera pas le script.

Variables

%k : sdb1 (nom du device)
%n : 1 (numéro de la partition)
%N : /dev/sdb1 (chemin complet d'accès au device)

Caractères spéciaux

? - signifie n'importe quel caractère (ex: "d?v" correspondra pour dev, duv, d_v mais pas dv);

* - signifie plusieurs caractères (ex: "d*" correspondra pour dev, mais aussi pour d, alors que edev n'ira pas);

[liste] - signifie un caractère, de la liste (ex: "d[aei]v" correspondra pour dev et dav, mais pas dov)

Scripts

Les scripts sont déclenchés par RUN.
Tous les chemins doivent être absolus !

root@netmasterpo-04:/etc/udev/rules.d# cat /data/donnees/system/scripts/rsync/script-udev
#!/bin/bash
/bin/echo $(/bin/date) - param : $* >> /data/donnees/system/scripts/rsync/script-udev.txt
/bin/echo $(/bin/date) - montage de /dev/myusbhd1 en /mnt >> /data/donnees/system/scripts/rsync/script-udev.txt
/bin/mount /dev/myusbhd1 /mnt >> /data/donnees/system/scripts/rsync/script-udev.txt
/bin/echo $(/bin/date) - ok >> /data/donnees/system/scripts/rsync/script-udev.txt

root@netmasterpo-04:/etc/udev/rules.d#



Exemple

root@netmasterpo-04:/etc/udev/rules.d# cat 80-disque-usb.rules
KERNEL=="sd??", SUBSYSTEM=="block", ATTRS{product}=="USB Portable HDD", ATTRS{serial}=="NA53WZ8D", SYMLINK+="myusbhd%n",ACTION=="add", NAME="myusbhd", RUN+="/data/donnees/system/scripts/rsync/script-udev k %k n %n N %N"
root@netmasterpo-04:/etc/udev/rules.d#




Tester



Sans exécution des scripts

udevadm test -a -p $(udevadm info -q path -n /dev/sdb)



Pour tester le fonctionnement de la règle, vous pouvez bien sûr redémarrer la machine (dans le cas d'un périphérique fixe comme un disque dur interne) ou débrancher puis rebrancher le périphérique (s'il s'agit d'un périphérique externe comme un disque usb), ou utiliser la commande suivante (si votre périphérique s'appelle /dev/sda1). La désignation du périphérique se fait ici par son chemin, donné également par udevadm info ci-dessus.

Source : http://doc.cliss21.com/index.php?title=R%C3%A8gles_udev


Avec exécution des scripts

To manually force udev to trigger your rules

udevadm trigger






Dernières modifs
Systemd (October 24th, 2020)
TP - rsyslogd (June 20th, 2017)
Gestion de la memoire (June 20th, 2017)
Ansible (November 10th, 2016)
Fichiers et systèmes de fichiers (November 8th, 2016)
X (October 20th, 2016)
Obtenir des informations sur le système (October 19th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno