logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:systeme:udev:regles [03/07/2014 00:06]
127.0.0.1 modification externe
doc:systeme:udev:regles [06/05/2015 18:19] (Version actuelle)
milou
Ligne 1: Ligne 1:
 ====== Ecrire des règles UDEV ====== ====== Ecrire des règles UDEV ======
-{{tag>​à-tester}} 
  
-Article ​originale ​dans le [[http://​wiki.slackware-fr.org/​logiciels:​articles:​ecrire_des_regles_pour_udev|wiki du forum slackware-fr]]+  * Objet : Ecrire des règles UDEV 
 +  * Niveau requis :​{{tag>​débutant avisé}} 
 +  * Commentaires : FIXME 
 +  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) 
 +  * Suivi : {{tag>​à-tester}} 
 +    * Création par [[user>​bendia]] le 27/​03/​2013 
 +    * Testé par .... le .... 
 +  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=6660 |C'est ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))  
 +**Nota :** Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
 + 
 + 
 + 
 + 
 +Article ​original ​dans le [[http://​wiki.slackware-fr.org/​logiciels:​articles:​ecrire_des_regles_pour_udev|wiki du forum slackware-fr]]
 Traduit de l'​anglais par [[http://​wiki.slackware-fr.org/​wiki:​contributeurs:​mushroom|Mushroom]]. Traduit de l'​anglais par [[http://​wiki.slackware-fr.org/​wiki:​contributeurs:​mushroom|Mushroom]].
  
Ligne 65: Ligne 77:
 udev fournit une dénomination constante prête à l'​emploi pour les périphériques de stockage du répertoire /dev/disk. Pour voir les noms constants qui ont été créés pour votre matériel de stockage, vous pouvez utiliser la commande suivante : udev fournit une dénomination constante prête à l'​emploi pour les périphériques de stockage du répertoire /dev/disk. Pour voir les noms constants qui ont été créés pour votre matériel de stockage, vous pouvez utiliser la commande suivante :
  
-    # ls -lR /dev/disk+<code root>ls -lR /dev/disk</​code>​
  
 Cela fonctionne pour tous les types de stockage. Par exemple, udev a créé /​dev/​disk/​by-id/​scsi-SATA_ST3120827AS_4MS1NDXZ-part3,​ qui est un lien symbolique nommé de manière constante pour ma racine. udev crée également /​dev/​disk/​by-id/​usb-Prolific_Technology_Inc._USB_Mass_Storage_Device-part1 quand je branche ma clé USB, ce qui est aussi un nom constant. Cela fonctionne pour tous les types de stockage. Par exemple, udev a créé /​dev/​disk/​by-id/​scsi-SATA_ST3120827AS_4MS1NDXZ-part3,​ qui est un lien symbolique nommé de manière constante pour ma racine. udev crée également /​dev/​disk/​by-id/​usb-Prolific_Technology_Inc._USB_Mass_Storage_Device-part1 quand je branche ma clé USB, ce qui est aussi un nom constant.
Ligne 184: Ligne 196:
 Certain répertoires sont référencés en tant que chemins de périphérique de plus haut niveau. Ces répertoires représentent des périphériques réels qui ont des noeuds de périphérique correspondant. Les chemins de périphérique de plus haut niveau ont comme caractéristique commune d'​être des répertoires de sysfs contenant un fichier dev. La commande suivante les listera pour vous : Certain répertoires sont référencés en tant que chemins de périphérique de plus haut niveau. Ces répertoires représentent des périphériques réels qui ont des noeuds de périphérique correspondant. Les chemins de périphérique de plus haut niveau ont comme caractéristique commune d'​être des répertoires de sysfs contenant un fichier dev. La commande suivante les listera pour vous :
  
-    # find /sys -name dev+<code root>find /sys -name dev</​code>​
  
 Par exemple, sur mon système, le répertoire /​sys/​block/​sda est le chemin de périphérique de mon disque dur. Il est relié à son parent, le périphérique du disque SCSI, par le lien symbolique /​sys/​block/​sda/​device. Par exemple, sur mon système, le répertoire /​sys/​block/​sda est le chemin de périphérique de mon disque dur. Il est relié à son parent, le périphérique du disque SCSI, par le lien symbolique /​sys/​block/​sda/​device.
Ligne 190: Ligne 202:
 Lorsque vous écrivez des règles basées sur les informations de sysfs, vous vous contentez de chercher des correspondances avec les attributs contenus dans certains fichiers au sein d'un maillon de la chaîne. Par exemple, je peux lire la taille de mon disque comme suit : Lorsque vous écrivez des règles basées sur les informations de sysfs, vous vous contentez de chercher des correspondances avec les attributs contenus dans certains fichiers au sein d'un maillon de la chaîne. Par exemple, je peux lire la taille de mon disque comme suit :
  
-    # cat /​sys/​block/​sda/​size+<code root>cat /​sys/​block/​sda/​size</​code>​
     234441648     234441648
  
Ligne 201: Ligne 213:
 C'est ici qu'​entre en scène udevinfo, qui est probablement l'​outil le plus direct que vous puissiez utiliser pour construire des règles. La seule chose que vous avez besoin de connaître est le chemin de périphérique au sein de sysfs du périphérique qui vous intéresse. Un exemple arrangé pour les besoins de la démonstration est présenté ci-dessous : C'est ici qu'​entre en scène udevinfo, qui est probablement l'​outil le plus direct que vous puissiez utiliser pour construire des règles. La seule chose que vous avez besoin de connaître est le chemin de périphérique au sein de sysfs du périphérique qui vous intéresse. Un exemple arrangé pour les besoins de la démonstration est présenté ci-dessous :
  
-    # udevinfo -a -p /​sys/​block/​sda +<code root>udevinfo -a -p /​sys/​block/​sda</​code>​ 
 +<file config retour de la commande>​
        ​looking at device '/​block/​sda':​        ​looking at device '/​block/​sda':​
          ​KERNEL=="​sda"​          ​KERNEL=="​sda"​
Ligne 236: Ligne 248:
          ​DRIVERS=="​sata_nv"​          ​DRIVERS=="​sata_nv"​
          ​ATTRS{vendor}=="​0x10de"​          ​ATTRS{vendor}=="​0x10de"​
-         ​ATTRS{device}=="​0x037f"​+         ​ATTRS{device}=="​0x037f"​</​file>​
  
 Comme vous pouvez le voir, udevinfo se contente de produire une liste des attributs que vous pouvez utiliser tels quels comme clés de correspondances dans vos règles udev. À partir de l'​exemple ci-dessus, je pourrais produire (par exemple) l'une ou l'​autre de ces deux règles : Comme vous pouvez le voir, udevinfo se contente de produire une liste des attributs que vous pouvez utiliser tels quels comme clés de correspondances dans vos règles udev. À partir de l'​exemple ci-dessus, je pourrais produire (par exemple) l'une ou l'​autre de ces deux règles :
Ligne 257: Ligne 269:
 La seule véritable difficulté dans l'​utilisation dudevinfo est en fait que vous devez connaître le chemin de périphérique de plus haut niveau (/​sys/​block/​sda dans l'​exemple ci-dessus), ce qui n'est pas toujours évident. Toutefois, dans la mesure où vous écrivez généralement des règles pour des noeuds de périphériques existant déjà, vous pouvez utiliser udevinfo pour retrouver le chemin de périphérique à votre place : La seule véritable difficulté dans l'​utilisation dudevinfo est en fait que vous devez connaître le chemin de périphérique de plus haut niveau (/​sys/​block/​sda dans l'​exemple ci-dessus), ce qui n'est pas toujours évident. Toutefois, dans la mesure où vous écrivez généralement des règles pour des noeuds de périphériques existant déjà, vous pouvez utiliser udevinfo pour retrouver le chemin de périphérique à votre place :
  
-    # udevinfo -a -p $(udevinfo -q path -n /dev/sda)+<code root>udevinfo -a -p $(udevinfo -q path -n /dev/sda)</​code>​
  
 ==== Les méthodes alternatives ==== ==== Les méthodes alternatives ====
Ligne 349: Ligne 361:
 Je mets mon imprimante sous tension, et il lui est assigné le noeud de périphérique /dev/lp0. Peu satisfait d'un nom aussi insignifiant,​ je décide d'​utiliser udevinfo pour m'​aider à écrire une règle qui me fournira un nom alternatif : Je mets mon imprimante sous tension, et il lui est assigné le noeud de périphérique /dev/lp0. Peu satisfait d'un nom aussi insignifiant,​ je décide d'​utiliser udevinfo pour m'​aider à écrire une règle qui me fournira un nom alternatif :
  
-    # udevinfo -a -p $(udevinfo -q path -n /dev/lp0)+<code root>udevinfo -a -p $(udevinfo -q path -n /dev/lp0)</​code>​ 
 +<file config retour de la commande>​
       looking at device '/​class/​usb/​lp0':​       looking at device '/​class/​usb/​lp0':​
         KERNEL=="​lp0"​         KERNEL=="​lp0"​
Ligne 360: Ligne 373:
         ATTRS{manufacturer}=="​EPSON"​         ATTRS{manufacturer}=="​EPSON"​
         ATTRS{product}=="​USB Printer"​         ATTRS{product}=="​USB Printer"​
-        ATTRS{serial}=="​L72010011070626380"​+        ATTRS{serial}=="​L72010011070626380"​</​file>​
  
 Ma règle devient alors : Ma règle devient alors :
Ligne 376: Ligne 389:
 Pour contourner ce problème, vous avez seulement besoin de réfléchir à ce qui diffère entre sdb et sdb1. Et c'est étonnamment simple : le nom lui-même diffère, de sorte que nous pouvons utiliser une simple recherche de correspondance avec le champ NAME : Pour contourner ce problème, vous avez seulement besoin de réfléchir à ce qui diffère entre sdb et sdb1. Et c'est étonnamment simple : le nom lui-même diffère, de sorte que nous pouvons utiliser une simple recherche de correspondance avec le champ NAME :
  
-    # udevinfo -a -p $(udevinfo -q path -n /dev/sdb1)+<code root>udevinfo -a -p $(udevinfo -q path -n /dev/sdb1)</​code>​ 
 +<file config retour de la commande>​
       looking at device '/​block/​sdb/​sdb1':​       looking at device '/​block/​sdb/​sdb1':​
         KERNEL=="​sdb1"​         KERNEL=="​sdb1"​
Ligne 389: Ligne 403:
         ATTRS{vendor}=="​OLYMPUS "         ATTRS{vendor}=="​OLYMPUS "
         ATTRS{scsi_level}=="​3"​         ATTRS{scsi_level}=="​3"​
-        ATTRS{type}=="​0"​+        ATTRS{type}=="​0"​</​file>​
  
 Voici-donc ma règle : Voici-donc ma règle :
Ligne 443: Ligne 457:
 Dans la mesure où elle est unique, le plus rationnel est de simplement chercher dans la règle des correspondances avec l'​adresse MAC de votre interface. Assurez-vous toutefois que vous utilisez l'​adresse MAC exacte, telle que retournée par udevinfo, car votre règle ne fonctionnera pas si le critère de recherche est inexact. Dans la mesure où elle est unique, le plus rationnel est de simplement chercher dans la règle des correspondances avec l'​adresse MAC de votre interface. Assurez-vous toutefois que vous utilisez l'​adresse MAC exacte, telle que retournée par udevinfo, car votre règle ne fonctionnera pas si le critère de recherche est inexact.
  
-    # udevinfo -a -p /​sys/​class/​net/​eth0+<code root>udevinfo -a -p /​sys/​class/​net/​eth0</​code>​ 
 +<file config retour de la commande>​
       looking at class device '/​sys/​class/​net/​eth0':​       looking at class device '/​sys/​class/​net/​eth0':​
         KERNEL=="​eth0"​         KERNEL=="​eth0"​
-        ATTR{address}=="​00:​52:​8b:​d5:​04:​48"​+        ATTR{address}=="​00:​52:​8b:​d5:​04:​48"​</​file>​
  
 Voici ma règle : Voici ma règle :
Ligne 467: Ligne 482:
 Si vous connaissez les chemins de périphérique de plus haut niveau dans sysfs, vous pouvez utiliser udevtest pour qu'il montre les actions qu'​udev ferait. Cela peut vous aider à déboguer vos règles. Par exemple, en admettant que vous vouliez déboguer une règle qui agit sur /​sys/​class/​sound/​dsp : Si vous connaissez les chemins de périphérique de plus haut niveau dans sysfs, vous pouvez utiliser udevtest pour qu'il montre les actions qu'​udev ferait. Cela peut vous aider à déboguer vos règles. Par exemple, en admettant que vous vouliez déboguer une règle qui agit sur /​sys/​class/​sound/​dsp :
  
-    # udevtest /​class/​sound/​dsp+<code root>udevtest /​class/​sound/​dsp</​code>​ 
 +<file config retour de la commande>​
     main: looking at device '/​class/​sound/​dsp'​ from subsystem '​sound'​     main: looking at device '/​class/​sound/​dsp'​ from subsystem '​sound'​
     udev_rules_get_name:​ add symlink '​dsp'​     udev_rules_get_name:​ add symlink '​dsp'​
Ligne 473: Ligne 489:
     udev_device_event:​ device '/​class/​sound/​dsp'​ already known, remove possible symlinks     udev_device_event:​ device '/​class/​sound/​dsp'​ already known, remove possible symlinks
     udev_node_add:​ creating device node '/​dev/​sound/​dsp',​ major = '​14',​ minor = '​3',​ mode = '​0660',​ uid = '​0',​ gid = '​18'​     udev_node_add:​ creating device node '/​dev/​sound/​dsp',​ major = '​14',​ minor = '​3',​ mode = '​0660',​ uid = '​0',​ gid = '​18'​
-    udev_node_add:​ creating symlink '/​dev/​dsp'​ to '​sound/​dsp'​+    udev_node_add:​ creating symlink '/​dev/​dsp'​ to '​sound/​dsp'​</​file>​
  
 Notez que le préfixe /sys a été retiré de l'​argument fourni sur la ligne de commande d'​udevtest. C'est parce qu'​udevtest opère sur les chemins de périphérique. Notez également qu'​udevtest est un pur outil de test/​débogage,​ il ne crée aucun noeud de périphérique,​ malgré ce que sa sortie suggère !  Notez que le préfixe /sys a été retiré de l'​argument fourni sur la ligne de commande d'​udevtest. C'est parce qu'​udevtest opère sur les chemins de périphérique. Notez également qu'​udevtest est un pur outil de test/​débogage,​ il ne crée aucun noeud de périphérique,​ malgré ce que sa sortie suggère ! 
doc/systeme/udev/regles.1404338815.txt.gz · Dernière modification: 06/05/2015 18:19 (modification externe)

Pied de page des forums

Propulsé par FluxBB