Forum général.général problème règle udev

Posté par  .
Étiquettes : aucune
1
21
mar.
2010
bonjour tout le monde, voila en fait je voudrais que dès qu'un périphériques usb est branché il soit automatiquement redirigé dans une machine virtuelle, mais bon pour le moment j'en suis pas là, je n'arrive même pas à lancer un truc quelconque quand une clé usb est branchée.
Donc j'ai ajouté dans /etc/udev/rules.d un fichier 99-my.rules et dans ce fichier j'ai mis :

DRIVERS=="usb-storage" RUN+="/usr/bin/kate"

pour lancer kate à chaque fois qu'un stockage usb est lancé mais rien ne se passe, mon fichier est mal fait ?
  • # Serveur X

    Posté par  . Évalué à 5.

    Bonjour bonjour,

    La règle a l'air correcte. Pense bien à faire un /etc/init.d/udev reload et à vérifier que ton /var/log/{messages,syslog} n'affiche aucun message d'insulte.

    Mais ce qui me semble le plus probable, c'est une erreur de permissions : udev ne peut pas lancer d'applications graphiques, ré-essaie avec un simple script shell et non kate.
    • [^] # Re: Serveur X

      Posté par  . Évalué à 1.

      alors
      j'ai modifié le fichier /etc/udev/rules.d un fichier 99-my.rules, il contient :
      DRIVERS=="usb-storage" RUN+="/etc/udev/test.sh"

      le fichier /etc/udev/test.sh contient :
      #!/bin/sh
      echo coucou >> /home/dvi43/coucoulog
      exit

      chmod 777 sur ce dernier (ben oui au premier coup ça n'a pas marché) et j'ai bien coucou qui s'affiche dans coucoulog...cependant il s'affiche une bonne dizaine de fois est-ce normal ?? du coup, vu que cela fonctionne pourquoi est ce que la règle suivante ne fonctionne pas ?j'ai testé et retesté dans tous les sens je ne comprends pas :

      ajout de /lib/udev/rules.d/30-autousb-vbox.rules

      qui contient DRIVERS=="usb-storage",IMPORT{program}="usb_id --num-info --export %p", RUN+="/lib/udev/vboxusb.sh"

      vboxusb.sh contient lui :

      #!/bin/sh

      attach_storage()
      {
      set `/sbin/lsusb -d ${ID_VENDOR}:${ID_MODEL}| sed 's/:.*//g'`
      while [ ! -z "$1" ]; do
      case $1 in
      Bus) shift
      address="/proc/bus/usb/$1"
      ;;
      Device) shift
      address=${address}"/$1"
      ;;
      esac
      shift
      done
      if [ ! -z "$address" ]; then
      su - root -c "VBoxManage controlvm vm usbattach"
      fi
      }

      case $DEVNAME in
      /dev/sd[a-z])
      attach_storage;
      ;;
      esac

      c'est censé faire monter automatiquement les périphs usb dans virtualbox mais rien !
      • [^] # Re: Serveur X

        Posté par  . Évalué à 1.

        (... 48h plus tard, mais ça peut toujours servir ...)

        Sur la partie VirtualBox, je n'y connais rien, je ne peux pas aider. Désolé.

        Sur la partie udev :
        j'ai bien coucou qui s'affiche dans coucoulog...cependant il s'affiche une bonne dizaine de fois est-ce normal ??
        Oui c'est normal !

        [ C'est la première fois que je vois la règle udev 'IMPORT{program}' et je ne connais pas le programme `usb_id`, donc je zappe ce détail. ]

        Autrement, tu peux debugger avec le script suivant pour mieux comprendre les variables qu'udev injecte dans l'environnement (comme ID_VENDOR_ENC, ID_MODEL_ID ou DEVPATH -- où usbX et hostX semblent correspondre au bus/device USB)

        #!/bin/bash
        attach_storage() {
        # vbox script goes here #
        }
        {
        echo "Starting $0"
        id
        env
        echo ""
        [[ "$DEVNAME" =~ "/dev/sd[a-z][0-9]" ]] && attach_storage
        echo ""
        } 2>&1 >>/tmp/toto.log

        La redirection devrait inclure les éventuels messages d'erreur de 'attach_storage' dans /tmp/toto.log. Au pire, ils seront lisibles dans le (sys)log d'udev (/var/log/messages sous Fedora).

        Bon et puis pour finir, je doute que la fonction attach_storage() soit correcte. Elle est trop complexe à mon goût : `su - root -c ...' semble inutile (udev lance déjà le script en tant que root, non ?) et l'appel à VBoxManage dans attach_storage est un peu foireux ($address ne sert pas ?).

        Un `VBoxManage list runningvms` préalable pourrait permettre d'avoir les UUID des machines virtuelles afin de l'utiliser dans `VBoxManage controlvm $MYUUID usbattach $USBUUID|$USBADDRESS`.

        Quelques tests manuels en shell sur attach_storage() ne seraient pas de trop.

        shell@toto $> export DEVPATH="titototo" DEVNAME="/dev/sda1" (...)
        shell@toto $> bash -x /tmp/toto.sh


        Courage !
        • [^] # Re: Serveur X

          Posté par  . Évalué à 1.

          3 plombes après mais c'est pas grave...
          je pense que je vais abandonner ce script et la récupération des variables depuis la règle Udev pour juste lancer un script qui s'occupera lui même de chercher ces variables, en fait à l'ajout de périph usb il faudrait lancer le script qu'il y a sur cette page : http://www.geordy.nl/?p=32 après avoir enlevé la petite interface graphique qui demande à l'user quel périph il veut pour tout passer automatiquement pfiou c'est pas gagné !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.