informatique:systeme:matos:udev

Udev

udevadm control --reload-rules
  • Récupérer les ID Vendeur et Modèle de votre device USB :
    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
  • Créer le fichier XML de déclaration du device dans /etc/libvirt/[VM]-[device].xml :
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x08e6'/>
        <product id='0x3438'/>
      </source>
      <alias name='gemplus-key-smartcard'/>
    </hostdev>
  • A l'aide du script suivant, identifier le device USB correspondant :
    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
  • Afficher toutes les informations du device vue par UDEV :
    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"
    [...]
  • Construire la règle équivalente UDEV correspondante dans le fichier /etc/udev/rules.d/90-libvirt-usb.rules :
    # [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"
  • Recharger les règles UDEV :
    udevadm control --reload-rules
  • Tester l'ajout et la suppression du device :
    # 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'

Si vous avez bien la ligne run: dans les deux cas à la fin, c'est que c'est bon.

  • informatique/systeme/matos/udev.txt
  • Dernière modification : 2016/03/21 17:23
  • de bn8