Règles UDEV - quelques exemples pratiques
Publié : dim. 07 juil. 2013, 11:11
Bonjour à tous,
Si vous voulez lancer automatiquement un programme lorque vous branchez un périphérique ou que vous voulez modifier les noms des périphériques, c'est dans les règes UDEV qu'il faut « tripatouiller ».
Exemple 1 - autocalibration d’un joystick
créer le fichier /etc/udev/rules.d/10-input.rules qui contient :
le nom du périphérique et autres attributs peuvent être trouvés en faisant un :
ATTRS{name}=="SAITEK CYBORG 3D USB"
Exemple 2 - déclenchement d’une sauvegarde lors du branchement d’un disque usb externe
créer le fichier /etc/udev/rules.d/10-usb.rules qui contient :
Exemple 3 - autoconfiguration du son de la sortie HDMI
ici, en fonction du résultat (clé RESULT) de la commande (clé PROGRAM) on exécute les actions désirées : le changement du fichier de configuration de alsa.
avec /etc/asound.hdmi à adapter en fonction de votre carte son (faire un aplay -l pour lister les périphériques)
Exemple 4 - forcer les noms des cartes réseau
créer un fichier /etc/udev/rules.d/10-network.rules qui contient :
C'est puls parlant que les nouveaux noms du genre enp5s0 etc.
Une fois la règle crée on peut la charger en faisant un :
Plus d'infos sur :
https://wiki.archlinux.org/index.php/Udev
http://reactivated.net/writing_udev_rules.html
et les pages de man d'udev
Si vous voulez lancer automatiquement un programme lorque vous branchez un périphérique ou que vous voulez modifier les noms des périphériques, c'est dans les règes UDEV qu'il faut « tripatouiller ».
Exemple 1 - autocalibration d’un joystick
créer le fichier /etc/udev/rules.d/10-input.rules qui contient :
Code : Tout sélectionner
SUBSYSTEM=="input", ACTION=="add", ATTRS{name}=="SAITEK CYBORG 3D USB", RUN+="/home/bin/jscal-cyborg"
Code : Tout sélectionner
udevadm info -a -n /dev/input/js0
Exemple 2 - déclenchement d’une sauvegarde lors du branchement d’un disque usb externe
créer le fichier /etc/udev/rules.d/10-usb.rules qui contient :
Code : Tout sélectionner
SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="0002", ATTRS{serial}=="001D60B16392AC61A5680012",\
RUN+="/home/bin/mon_script_de_backup"
Code : Tout sélectionner
SUBSYSTEM=="drm", ACTION=="change", PROGRAM=="/usr/bin/cat /sys/class/drm/card0-HDMI-A-1/status",\
RESULT=="connected", RUN+="/usr/bin/ln -s /etc/asound.hdmi /etc/asound.conf"
SUBSYSTEM=="drm", ACTION=="change", PROGRAM=="/usr/bin/cat /sys/class/drm/card0-HDMI-A-1/status",\
RESULT=="disconnected", RUN+="/usr/bin/rm /etc/asound.conf"
Code : Tout sélectionner
pcm.!default {
type hw
card 0
device 3
}
Exemple 4 - forcer les noms des cartes réseau
créer un fichier /etc/udev/rules.d/10-network.rules qui contient :
Code : Tout sélectionner
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:9a:f5:d3:22:ba", NAME="net0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="68:5f:41:95:2f:7e", NAME="wifi0"
Une fois la règle crée on peut la charger en faisant un :
Code : Tout sélectionner
sudo udevadm control --reload-rules
https://wiki.archlinux.org/index.php/Udev
http://reactivated.net/writing_udev_rules.html
et les pages de man d'udev