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
udev [Le 22/11/2021, 16:40]
194.2.202.87 [Palm USB]
udev [Le 11/09/2022, 11:41] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 18: Ligne 18:
 ====Terminologie:​ devfs, sysfs, nodes, etc.==== ====Terminologie:​ devfs, sysfs, nodes, etc.====
  
-Voici une introduction basique. ​+Voici une introduction basique.
  
 Sur les systèmes à base de Linux, le répertoire ''/​dev''​ sert à contenir les périphériques sous forme de fichier, les "​nodes",​ qui se rapportent aux périphériques système. Chaque "​node"​ se réfère à un périphérique,​ qui peut -ou pas- exister. Les applications utilisateur peuvent utiliser ces "​nodes"​ pour interagir avec le périphérique. Par exemple, le serveur graphique X va "​écouter"​ ''/​dev/​input/​mice''​ qui se réfère à la souris et faire bouger le pointeur à l'​écran. Sur les systèmes à base de Linux, le répertoire ''/​dev''​ sert à contenir les périphériques sous forme de fichier, les "​nodes",​ qui se rapportent aux périphériques système. Chaque "​node"​ se réfère à un périphérique,​ qui peut -ou pas- exister. Les applications utilisateur peuvent utiliser ces "​nodes"​ pour interagir avec le périphérique. Par exemple, le serveur graphique X va "​écouter"​ ''/​dev/​input/​mice''​ qui se réfère à la souris et faire bouger le pointeur à l'​écran.
Ligne 30: Ligne 30:
 ====Pourquoi ?==== ====Pourquoi ?====
  
-Les règles //udev// sont flexibles et très puissantes. Voici quelques exemples de ce que vous pouvez faire : +Les règles //udev// sont flexibles et très puissantes. Voici quelques exemples de ce que vous pouvez faire :
  
   * changer le nom assigné par défaut à un périphérique;​   * changer le nom assigné par défaut à un périphérique;​
Ligne 42: Ligne 42:
   * lancer un script quand un périphérique est créé ou supprimé (en général pour un périphérique qui se branche à chaud, comme l'​USB);​   * lancer un script quand un périphérique est créé ou supprimé (en général pour un périphérique qui se branche à chaud, comme l'​USB);​
  
-  * renommer les interfaces réseaux ​+  * renommer les interfaces réseaux
  
  
Ligne 74: Ligne 74:
 ====Syntaxe d'une règle==== ====Syntaxe d'une règle====
  
-Chaque règle est faite d'un ensemble de //clefs de correspondances//​ et de //clefs d'​assignation//,​ séparées par des virgules. Les //clefs de correspondances//​ sont les conditions utilisées pour identifier le périphérique sur lequel la règle agit. **Quand toute la série de ces clefs de correspondance correspond bien au périphérique,​ alors la règle est appliquée et les actions des clefs d'​assignation sont appliquées**. Chaque règle doit se composer d'au moins une clef de correspondance et d'une clef d'​assignation. ​+Chaque règle est faite d'un ensemble de //clefs de correspondances//​ et de //clefs d'​assignation//,​ séparées par des virgules. Les //clefs de correspondances//​ sont les conditions utilisées pour identifier le périphérique sur lequel la règle agit. **Quand toute la série de ces clefs de correspondance correspond bien au périphérique,​ alors la règle est appliquée et les actions des clefs d'​assignation sont appliquées**. Chaque règle doit se composer d'au moins une clef de correspondance et d'une clef d'​assignation.
  
 Prenons par exemple : Prenons par exemple :
Ligne 136: Ligne 136:
 La première règle assure que le périphérique "​node"​ appelé ''​mice''​ (pour une souris) apparaîtra exclusivement dans le répertoire ''/​dev/​input''​ (donc ''/​dev/​input/​mice'',​ au lieu du défaut ''/​dev/​mice''​). La deuxième règle assure que le périphérique "​node"​ ''​loop0''​ soit créé comme ''/​dev/​loop/​0'',​ mais crée aussi un lien symbolique ''/​dev/​loop0''​ pour être compatible. La première règle assure que le périphérique "​node"​ appelé ''​mice''​ (pour une souris) apparaîtra exclusivement dans le répertoire ''/​dev/​input''​ (donc ''/​dev/​input/​mice'',​ au lieu du défaut ''/​dev/​mice''​). La deuxième règle assure que le périphérique "​node"​ ''​loop0''​ soit créé comme ''/​dev/​loop/​0'',​ mais crée aussi un lien symbolique ''/​dev/​loop0''​ pour être compatible.
  
-On peut se demander quel est le véritable intérêt dans le cas de ces deux règles, car elles peuvent être utilisées sans aucun opérateur de substitution. Le véritable intérêt des substitutions va être expliqué dans la section suivante. ​+On peut se demander quel est le véritable intérêt dans le cas de ces deux règles, car elles peuvent être utilisées sans aucun opérateur de substitution. Le véritable intérêt des substitutions va être expliqué dans la section suivante.
  
 ====Reconnaissance évoluée de noms==== ====Reconnaissance évoluée de noms====
Ligne 162: Ligne 162:
 ====Organisation de sysfs==== ====Organisation de sysfs====
  
-L'​utilisation de //sysfs// a été brièvement évoquée précédemment. Dans le but d'​écrire des règles basées sur ces informations,​ il vous faut connaître le nom des attributs et leurs valeurs.  +L'​utilisation de //sysfs// a été brièvement évoquée précédemment. Dans le but d'​écrire des règles basées sur ces informations,​ il vous faut connaître le nom des attributs et leurs valeurs. 
-//Sysfs// a une structure très simple. Il est logiquement divisé en répertoires,​ chacun comportant un certain nombre de fichiers (//​attributs//​) qui contiennent en général une seule valeur. Certains liens symboliques sont présents, parcourant plusieurs branches de "​l'​arbre"​ //​sysfs//​. ​+//Sysfs// a une structure très simple. Il est logiquement divisé en répertoires,​ chacun comportant un certain nombre de fichiers (//​attributs//​) qui contiennent en général une seule valeur. Certains liens symboliques sont présents, parcourant plusieurs branches de "​l'​arbre"​ //sysfs//.
  
 Certains répertoires sont situés sur les niveaux supérieurs du dispositif. Le niveau supérieur lie d'​autres parties de //sysfs// vers le périphérique en question. Les chemins des périphériques du niveau supérieur sont classifiés dans le répertoire //sysfs//, contenant un fichier ''​dev''​. La commande suivante permet de les lister : Certains répertoires sont situés sur les niveaux supérieurs du dispositif. Le niveau supérieur lie d'​autres parties de //sysfs// vers le périphérique en question. Les chemins des périphériques du niveau supérieur sont classifiés dans le répertoire //sysfs//, contenant un fichier ''​dev''​. La commande suivante permet de les lister :
Ligne 417: Ligne 417:
 </​code>​ </​code>​
  
-On peut maintenant faire une règle comme celle-ci : +On peut maintenant faire une règle comme celle-ci :
  
 <​code>​BUS=="​usb",​ ATTR{serial}=="​L72010011070626380",​ SYMLINK+="​epson_680"</​code>​ <​code>​BUS=="​usb",​ ATTR{serial}=="​L72010011070626380",​ SYMLINK+="​epson_680"</​code>​
Ligne 425: Ligne 425:
 ====Appareil photo USB==== ====Appareil photo USB====
  
-Comme la plupart des appareils photo, mon appareil photo est identifié comme un disque dur externe branché en USB, utilisant le transport SCSI. Pour accéder à ses photos, on monte le périphérique et on copie les images sur son disque dur. +Comme la plupart des appareils photo, mon appareil photo est identifié comme un disque dur externe branché en USB, utilisant le transport SCSI. Pour accéder à ses photos, on monte le périphérique et on copie les images sur son disque dur.
  
 Tous les appareils photo ne fonctionnent pas forcément avec cette méthode : certains utilisent un protocole non-storage comme les appareils photo supportés par [[http://​www.gphoto.org/​|gphoto2]]. Tous les appareils photo ne fonctionnent pas forcément avec cette méthode : certains utilisent un protocole non-storage comme les appareils photo supportés par [[http://​www.gphoto.org/​|gphoto2]].
Ligne 447: Ligne 447:
 Notre règle va donc devoir différencier les deux. Pour résoudre ceci, vous devez chercher ce qui diffère entre ''​sdb''​ et ''​sdb1''​. C'est étonnement simple : seul le nom diffère, donc nous pouvons utiliser une règle simple sur le champ ''​NAME''​. Notre règle va donc devoir différencier les deux. Pour résoudre ceci, vous devez chercher ce qui diffère entre ''​sdb''​ et ''​sdb1''​. C'est étonnement simple : seul le nom diffère, donc nous pouvons utiliser une règle simple sur le champ ''​NAME''​.
  
-Ma règle est alors : +Ma règle est alors :
  
 <​code>​KERNEL=="​sd?​1",​ BUS=="​scsi",​ ATTR{model}=="​X250,​D560Z,​C350Z",​ SYMLINK+="​camera"</​code>​ <​code>​KERNEL=="​sd?​1",​ BUS=="​scsi",​ ATTR{model}=="​X250,​D560Z,​C350Z",​ SYMLINK+="​camera"</​code>​
Ligne 460: Ligne 460:
 <​code>​BUS=="​usb",​ KERNEL=="​sd*",​ ATTR{product}=="​USB 2.0 Storage Device",​ NAME="​%k",​ SYMLINK+="​usbhd%n"</​code>​ <​code>​BUS=="​usb",​ KERNEL=="​sd*",​ ATTR{product}=="​USB 2.0 Storage Device",​ NAME="​%k",​ SYMLINK+="​usbhd%n"</​code>​
  
-Cette règle crée des liens symboliques comme ceci : +Cette règle crée des liens symboliques comme ceci :
  
    * ''/​dev/​usbhd''​ – Le périphérique pour ''​fdisk'';​    * ''/​dev/​usbhd''​ – Le périphérique pour ''​fdisk'';​
Ligne 468: Ligne 468:
 ====Lecteurs de carte USB==== ====Lecteurs de carte USB====
  
-Les Lecteurs de carte USB (//​CompactFlash//,​ //​SmartMedia//,​ etc.) sont encore un autre type de périphériques de stockage USB, avec un usage différent. ​+Les Lecteurs de carte USB (//​CompactFlash//,​ //​SmartMedia//,​ etc.) sont encore un autre type de périphériques de stockage USB, avec un usage différent.
  
 Ces périphériques n'​informent pas l'​ordinateur hôte lors d'un changement de média. Ainsi, si vous connectez le périphérique sans carte, puis que vous y insérez une carte, l'​ordinateur ne va pas le détecter et vous n'​aurez pas accès à la partition de votre carte. Ces périphériques n'​informent pas l'​ordinateur hôte lors d'un changement de média. Ainsi, si vous connectez le périphérique sans carte, puis que vous y insérez une carte, l'​ordinateur ne va pas le détecter et vous n'​aurez pas accès à la partition de votre carte.
Ligne 498: Ligne 498:
 Etant référencées par leur noms, les interfaces réseau n'ont par défaut pas de périphérique "​node"​ attribué. L'​écriture de règles reste cependant identique. Etant référencées par leur noms, les interfaces réseau n'ont par défaut pas de périphérique "​node"​ attribué. L'​écriture de règles reste cependant identique.
  
-Il est logique d'​utiliser simplement l'​adresse MAC de votre interface dans la règle, puisque celle-ci est unique. Cependant, soyez certain d'​utiliser l'​adresse MAC exacte, telle que montrée par //udevadm info//, sinon votre règle ne fonctionnera pas. +Il est logique d'​utiliser simplement l'​adresse MAC de votre interface dans la règle, puisque celle-ci est unique. Cependant, soyez certain d'​utiliser l'​adresse MAC exacte, telle que montrée par //udevadm info//, sinon votre règle ne fonctionnera pas.
  
 <​code>​ udevadm info -a -p /​sys/​class/​net/​eth0 <​code>​ udevadm info -a -p /​sys/​class/​net/​eth0
Ligne 548: Ligne 548:
 Si vous êtes sur un noyau avec le support //​inotify//,​ //udev// surveillera votre répertoire de règles et prendra en compte automatiquement les modifications faites dans vos règles. Si vous êtes sur un noyau avec le support //​inotify//,​ //udev// surveillera votre répertoire de règles et prendra en compte automatiquement les modifications faites dans vos règles.
  
-A l'​encontre de ceci, **//udev// ne remontera pas automatiquement les périphériques,​ mais tentera d'​appliquer les règles**. Par exemple, si vous écrivez une règle pour ajouter un lien symbolique pour votre appareil photo alors que celui-ci est déjà branché au PC, ne vous attendez pas à ce que le lien symbolique soit créé. ​+A l'​encontre de ceci, **//udev// ne remontera pas automatiquement les périphériques,​ mais tentera d'​appliquer les règles**. Par exemple, si vous écrivez une règle pour ajouter un lien symbolique pour votre appareil photo alors que celui-ci est déjà branché au PC, ne vous attendez pas à ce que le lien symbolique soit créé.
 Pour créer le lien symbolique, vous pouvez simplement débrancher et rebrancher votre appareil photo. Si le périphérique ne peut pas être débranché,​ vous pouvez lancer dans une console la commande ''​udevadm trigger''​. Pour créer le lien symbolique, vous pouvez simplement débrancher et rebrancher votre appareil photo. Si le périphérique ne peut pas être débranché,​ vous pouvez lancer dans une console la commande ''​udevadm trigger''​.
  
Ligne 575: Ligne 575:
 [[http://​www.reactivated.net/​writing_udev_rules.html|Ce document a été rédigé originellement en anglais]] par Daniel Drake <​dan@reactivated.net>​ et traduit par [[utilisateurs:​Acp]]. Les retours en anglais sont appréciés par Daniel Drake :) et modifié par la suite. [[http://​www.reactivated.net/​writing_udev_rules.html|Ce document a été rédigé originellement en anglais]] par Daniel Drake <​dan@reactivated.net>​ et traduit par [[utilisateurs:​Acp]]. Les retours en anglais sont appréciés par Daniel Drake :) et modifié par la suite.
  
-Pour le support, envoyez un mail (en anglais) à la mailing liste de linux hotplug : <​linux-hotplug-devel@lists.sourceforge.net>​. ​+Pour le support, envoyez un mail (en anglais) à la mailing liste de linux hotplug : <​linux-hotplug-devel@lists.sourceforge.net>​.
  
 Copyright (C) 2003-2006 Daniel Drake. Copyright (C) 2003-2006 Daniel Drake.
  • udev.txt
  • Dernière modification: Le 11/09/2022, 11:41
  • par moths-art