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

Prochaine révision
Révision précédente
doc:systeme:udev:regles [27/03/2013 21:56]
bendia créée
doc:systeme:udev:regles [06/05/2015 18:19] (Version actuelle)
milou
Ligne 1: Ligne 1:
-Traduit de l'​anglais par Mushroom.+====== Ecrire des règles UDEV ======
  
-Version 0.74-1fr.+  * 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 !
  
-Copyright © 2008 Sébastien Boillod <sbb chez tuxfamily point org>, pour la présente traduction. 
  
-Copyright © 2003-2008 Daniel Drake <dan chez reactivated point net>, pour la version originale. 
  
-Ce texte est publié selon les termes de la GNU General Public License (GPL), version 2 de la licence. 
  
-<​note>​La version originale la plus récente de ce document peut être trouvée ici : http://www.reactivated.net/writing_udev_rules.html +Article original dans le [[http://wiki.slackware-fr.org/logiciels:​articles:​ecrire_des_regles_pour_udev|wiki ​du forum slackware-fr]] 
-Le numéro de version de cette traduction indique, pour ce qui est à gauche ​du tiret, la dernière version originale avec laquelle celle-ci a été synchronisée et, à droite du tiret, le nombre ​de révisions qu'elle a subies depuis cette dernière synchronisation.</note>+Traduit ​de l'anglais par [[http://​wiki.slackware-fr.org/wiki:​contributeurs:​mushroom|Mushroom]].
  
-Ce tutoriel étant loin de lui être d'un usage quotidien (même s'il est très intéressant),​ il se peut que cette feignasse de traducteur laisse l'​original prendre quelques longueurs d'​avance sur la traduction. Si vous constatez qu'une resynchronisation des versions serait souhaitable (ou pour toute autre remarque sur cette traduction),​ n'​hésitez pas à me contacter. ;-) – Seb.+Version 0.74-1fr. \\ 
 +Copyright © 2008 Sébastien Boillod <sbb chez tuxfamily point org>, pour la présente traduction. \\ 
 +Copyright © 2003-2008 Daniel Drake <dan chez reactivated point net>, pour la version originale. \\ 
 +Ce texte est publié selon les termes de la [[http://​www.gnu.org/​licenses/​old-licenses/​gpl-2.0.html|GNU General Public License (GPL)]], version 2 de la licence. 
 + 
 +== Nota == 
 + 
 +La version originale la plus récente de ce document peut être trouvée ici : 
 +  * http://​www.reactivated.net/​writing_udev_rules.html 
 + 
 +Le numéro de version de cette traduction indique, pour ce qui est à gauche du tiret, la dernière version originale avec laquelle celle-ci a été synchronisée et, à droite du tiret, le nombre de révisions qu'​elle a subies depuis cette dernière synchronisation. 
 + 
 +Ce tutoriel étant loin de lui être d'un usage quotidien (même s'il est très intéressant),​ il se peut que cette feignasse de traducteur laisse l'​original prendre quelques longueurs d'​avance sur la traduction. ​\\ 
 +Si vous constatez qu'une resynchronisation des versions serait souhaitable (ou pour toute autre remarque sur cette traduction),​ n'​hésitez pas à me contacter. ;-) – Seb.
  
 ===== Introduction ===== ===== Introduction =====
Ligne 59: 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 84: Ligne 102:
     KERNEL=="​hdb",​ NAME="​my_spare_disk"​     KERNEL=="​hdb",​ NAME="​my_spare_disk"​
  
-La règle ci-dessus contient une clé de correspondance (KERNEL) et une clé d'​assignation (NAME). La sémantique de ces clés et leurs propriétés seront détaillées plus tard. Il est important de noter que la clé de correspondance est reliée à sa valeur par l'​opérateur d'​égalité (==), alors que la clé d'​assignation est reliée à sa valeur par l'​opérateur d'​assignation (=).+La règle ci-dessus contient une clé de correspondance (KERNEL) et une clé d'​assignation (NAME). La sémantique de ces clés et leurs propriétés seront détaillées plus tard. Il est important de noter que la clé de correspondance est reliée à sa valeur par l'​opérateur d'​égalité ( == ), alors que la clé d'​assignation est reliée à sa valeur par l'​opérateur d'​assignation ( = ).
  
 Observez bien qu'​udev ne supporte aucune forme de continuation de ligne. N'​insérez aucune rupture de ligne (« \ ») dans vos règles, car cela amènera udev à considérer votre règle unique comme plusieurs règles et ne donnera donc pas le résultat escompté. Observez bien qu'​udev ne supporte aucune forme de continuation de ligne. N'​insérez aucune rupture de ligne (« \ ») dans vos règles, car cela amènera udev à considérer votre règle unique comme plusieurs règles et ne donnera donc pas le résultat escompté.
Ligne 178: 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 184: 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 195: 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 230: 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 251: 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 343: 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 354: 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 370: 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 383: 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 437: 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 461: 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 467: 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.1364417760.txt.gz · Dernière modification: 27/03/2013 21:56 par bendia

Pied de page des forums

Propulsé par FluxBB