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 isnt 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
|
|
Contact
|
|---|
Pour m'envoyer un mail, Pour me laisser un commentaire :richard.brunooo chez gmail.com |  |
|
|