next up previous contents Next: Exemple 1: règle pour Up: Règles d'udev. Previous: Identifier les périphériques grâce   Table des matières  

19.8.6.6 Identifier les périphériques grâce aux fichiers de /sys - udevinfo.

Le pseudo-système de fichiers /sys contient une arborescence de répertoires renfermant des information sur votre matériel. Les données sont typiquement le nom du périphérique, le fabricant et/ou le numéro identificateur.

Notez aussi que les clefs de type SYSFS{...} peuvent être combinées avec les clefs de bases.

Si vous avez branché un appareil photo USB, un fichier sera créé dans /sys/block/sda/device/model/ contenant par exemple ``USB 2.0M DSC''. La clef SYSFS sera donc: SYSFS{model} = "USB 2.0M DSC". [Notez que tout fichier dans /sys peut être l'objet d'une correspondance selon cette méthode. Cependant, si vous établissez une correspondance sur plus d'un fichier en utilisant des clefs multiples, vous ne pourrez effectuer des correspondances que dans un même répertoire alors qu'il est fréquent que plusieurs répertoires soient dévolus à un périphérique.]

Naturellement, l'établissement de règles ne se fait pas en parcourant manuellement les fichiers de /sys. C'est ici qu'intervient l'utilitaire udevinfo associé à votre paquet udev.

La première action à mener consiste à trouver un répertoire de /sys qui corresponde à votre périphérique (un fichier du type /dev/...). La recherche ne doit se faire que dans /sys/block ou /sys/class. Alors, udevinfo suivra les liens symboliques vers d'autres répertoires. Lorsque vous avez trouvé le répertoire adéquat, vous pouvez lancer udevinfo. Supposons que vous venez de brancher une clé USB. Le noeud /dev/sda est créé. Exécutez:

udevinfo -q path -n /dev/sda 


qui vous retourne:

/block/sda 


Ceci indique que le chemin de sysfs est /sys/block/sda. Vous pouvez lancer la commande:

udevinfo -a -p /sys/block/sda 


mais en général, les deux commandes précédantes peuvent être combinées:

udevinfo -a -p `udevinfo -q path -n /dev/sda` 


Les informations que vous allez recueillir devraient ressembler à ceci:

follow the class device's "device" 
looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1 \ 
/usb3/3-3/3-3:1.0/host0/0:0:0:0': 
  BUS="scsi" ID="0:0:0:0" 
  SYSFS{detach_state}="0" 
  SYSFS{type}="0" 
  SYSFS{max_sectors}="240" 
  SYSFS{device_blocked}="0" 
  SYSFS{queue_depth}="1"  
  SYSFS{scsi_level}="3"  
  SYSFS{vendor}=" "  
  SYSFS{model}="USB 2.0M DSC "  
  SYSFS{rev}="1.00"  
  SYSFS{online}="1" 
 
looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-3':
  BUS="usb"
  ID="3-3"
  SYSFS{detach_state}="0"
  SYSFS{bNumInterfaces}=" 1"
  SYSFS{bConfigurationValue}="1"
  SYSFS{bmAttributes}="c0"
  SYSFS{bMaxPower}=" 0mA"
  SYSFS{idVendor}="052b" 
  SYSFS{idProduct}="1514"
  SYSFS{bcdDevice}="0100"
  SYSFS{bDeviceClass}="00"
  SYSFS{bDeviceSubClass}="00"
  SYSFS{bDeviceProtocol}="00" 
  SYSFS{bNumConfigurations}="1"
  SYSFS{speed}="12"
  SYSFS{manufacturer}="Tekom Technologies, Inc"
  SYSFS{product}="USB 2.0M DSC"


A ce stade, il est important de constater qu'udevinfo a retourné deux types d'informations différentes représentées dans l'encadré avec deux types de polices de caractères pour bien les différencier. La première sources d'information provient de /sys/devices/pci0000:00/0000:00:02.1/usb3/3-3/3-3:1.0/host0/0:0:0:0, l'autre, de /sys/devices/pci0000:00/0000:00:02.1/usb3/3-3. En effet, les règles ne fonctionnent que si nous ne mélangeons pas des informations de type différents. Par exemple, la règle suivantes ne fonctionnera pas:

BUS="scsi", SYSFS{manufacturer}="Tekom Technologies, Inc", NAME="%k" 


En revanche, la règle suivante est opérationnelle:

BUS="usb", SYSFS{manufacturer}="Tekom Technologies, Inc", NAME="%k" 


next up previous contents Next: Exemple 1: règle pour Up: Règles d'udev. Previous: Identifier les périphériques grâce   Table des matières  
1-01-2006