informatique:systeme:matos:udev

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

informatique:systeme:matos:udev [2016/03/21 15:57] – créée bn8informatique:systeme:matos:udev [2016/03/21 17:23] (Version actuelle) bn8
Ligne 4: Ligne 4:
  
 <code>udevadm control --reload-rules</code> <code>udevadm control --reload-rules</code>
 +
 +===== Règle d'attache automatique d'un device USB à une VM via libvirt =====
 +
 +  * Récupérer les ID Vendeur et Modèle de votre device USB  : <code bash>lsub
 +Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 +Bus 011 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +Bus 010 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 +Bus 009 Device 005: ID 08e6:3438 Gemplus GemPC Key SmartCard Reader
 +Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 +Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 +Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 +Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 +Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 +Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub</code>
 +
 +  * Créer le fichier XML de déclaration du device dans /etc/libvirt/[VM]-[device].xml : <code xml><hostdev mode='subsystem' type='usb' managed='yes'>
 +  <source>
 +    <vendor id='0x08e6'/>
 +    <product id='0x3438'/>
 +  </source>
 +  <alias name='gemplus-key-smartcard'/>
 +</hostdev></code>
 +
 +  * A l'aide du script suivant, identifier le device USB correspondant : <code bash>VENDOR=08e6
 +MODEL=3438
 +for X in /sys/bus/usb/devices/*; do
 +    if [ "$VENDOR" == "$(cat "$X/idVendor" 2>/dev/null)" -a "$MODEL" == "$(cat "$X/idProduct" 2>/dev/null)" ]
 +    then
 +        echo "$X"
 +    fi
 +done</code>
 +
 +  * Afficher toutes les informations du device vue par UDEV : <code bash>udevadm info -q all -a --path=/sys/bus/usb/devices/9-1
 +  looking at device '/devices/pci0000:00/0000:00:13.0/usb9/9-1':
 +    KERNEL=="9-1"
 +    SUBSYSTEM=="usb"
 +    DRIVER=="usb"
 +[...]
 +    ATTR{idVendor}=="08e6"
 +[...]
 +    ATTR{idProduct}=="3438"
 +[...]</code>
 +
 +  * Construire la règle équivalente UDEV correspondante dans le fichier ///etc/udev/rules.d/90-libvirt-usb.rules// : <code># [VM] - [Device]
 +ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="08e6", ATTR{idProduct}=="3438", RUN+="/usr/bin/virsh attach-device [VM] /etc/libvirt/[VM]-[Device].xml"
 +ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="08e6", ENV{ID_MODEL_ID}=="3438", RUN+="/usr/bin/virsh detach-device [VM] /etc/libvirt/[VM]-[Device].xml"</code>
 +
 +  * Recharger les règles UDEV : <code bash>udevadm control --reload-rules</code>
 +
 +  * Tester l'ajout et la suppression du device : <code bash># udevadm test --action='add' /sys/bus/usb/devices/9-1
 +run_command: calling: test
 +adm_test: version 175
 +This program is for debugging only, it does not run any program,
 +specified by a RUN key. It may show incorrect results, because
 +some values may be different, or not available at a simulation run.
 +
 +parse_file: reading '/lib/udev/rules.d/42-qemu-usb.rules' as rules file
 +[...]
 +parse_file: reading '/etc/udev/rules.d/90-libvirt-usb.rules' as rules file
 +[...]
 +ACTION=add
 +[...]
 +DRIVER=usb
 +ID_BUS=usb
 +[...]
 +ID_MODEL_ID=3438
 +[...]
 +ID_VENDOR=Gemplus
 +ID_VENDOR_ENC=Gemplus
 +ID_VENDOR_ID=08e6
 +[...]
 +PRODUCT=8e6/3438/100
 +SUBSYSTEM=usb
 +[...]
 +run: '/usr/bin/virsh attach-device [VM] /etc/libvirt/[VM]-[Device].xml'
 +# udevadm test --action='remove' /sys/bus/usb/devices/9-1
 +[...]
 +run: '/usr/bin/virsh detach-device [VM] /etc/libvirt/[VM]-[Device].xml'
 +</code>
 +
 +Si vous avez bien la ligne ''run:'' dans les deux cas à la fin, c'est que c'est bon.
  • informatique/systeme/matos/udev.1458575861.txt.gz
  • Dernière modification : 2016/03/21 15:57
  • de bn8