• Aucun résultat trouvé

Noms de périphériques déterminés par l’utilisateur

Le répertoire/dev/contient des fichiers virtuels qui représentent des périphériques. Chaque fichier virtuel représente un périphérique du système tel qu’un périphérique de stockage, un périphérique USB ou une imprimante. On appelle ces fichiers virtuels desnoms de périphériques.

Les noms des périphériques IDE commencent parhdet ceux des périphériques SCSI parsd. Le préfixe est suivi par une lettre, à partir de la lettre a, représentant l’ordre des disques. Par exemple, /dev/hda correspond au premier disque dur IDE, /dev/hdb au deuxième disque dur IDE, /dev/hdcau troisième, et ainsi de suite.

Si un nom de périphérique est suivi d’un nombre, ce dernier représente le numéro de la partition. Par exemple,/dev/hda1correspond à la première partition sur le premier disque IDE.

Si un disque dur est physiquement déplacé vers un emplacement différent dans l’ordinateur, s’il est enlevé ou s’il ne peut être initialisé, certains noms de périphérique changeront rendant par là-même des références aux noms de périphérique potentiellement non valides. Par exemple, comme le montre la Figure 7-1, si un système dispose de trois disques durs SCSI et que le deuxième disque dur est retiré,/dev/sdcdevient/dev/sdb. En raison de ce changement, toute référence à/dev/sdcn’est plus valide de même que toute référence à/dev/sdbpuisqu’il s’agit désormais d’un disque différent.

/dev/sda /dev/sdb /dev/sdc

/dev/sda /dev/sdb

Figure 7-1. Suppression d’un disque dur

Chaque disque dur est reconnaissable par un identifiant unique que l’on appelleUUID. Afin de ré-soudre le problème associé au changement de noms de périphériques,devlabelprend en compte les noms de périphériques définis par l’utilisateur qui sont associés à ces UUID. Un lien symbolique est créé du nom de périphérique défini par l’utilisateur vers le nom de périphérique réel. Si le nom de périphérique réel change, le lien symbolique est mis à jour afin qu’il renvoie au même périphérique en fonction de son UUID. Ainsi, les périphériques de stockage, qu’ils soient de type IDE ou SCSI, peuvent être référencés d’après leurs noms définis par l’utilisateur.

devlabelprend aussi en compte le montage automatique à chaud de périphériques (hotplug) tels que des disques durs amovibles et des périphériques USB comme des cartes mémoire pour des appareils photos numériques. Si le périphérique est configuré de manière à être monté automatiquement, une fois branché, il est monté avec le nom de périphérique défini pas l’utilisateur.

28 Chapitre 7. Noms de périphériques déterminés par l’utilisateur

7.1. Configuration de

devlabel

Des noms de périphériques définis par l’utilisateur peuvent être ajoutés en fonction du nom du péri-phérique, du nom de la partition ou de l’UUID du disque.

Utilisez la syntaxe suivante pour ajouter un nom de périphérique défini par l’utilisateur au périphérique de stockage. Le périphérique spécifié peut être le périphérique dans sa totalité ou une seule partition sur le péripérique.

devlabel add -d device -s symlink

Par exemple, pour ajouter le lien symbolique/dev/workqui représentera la partition/dev/hdb1, utilisez la commande suivante :

devlabel add -d /dev/hdb1 -s /dev/work

Si la commande utilisée a fonctionné, l’extrait suivant apparaîtra : Created symlink /dev/work -> /dev/hdb1

Added /dev/work to /etc/sysconfig/devlabel

Pour ajouter un nom de périphérique pour un périphérique basé sur un UUID, utilisez la syntaxe suivante :

devlabel add -u uuid -s symlink

Pour utiliserdevlabelen vue de rechercher l’UUID pour un périphérique (ou s’assurer qu’il en a bien un), utilisez la commande suivante :

devlabel printid -d device

Les noms des différents liens symboliques doivent être uniques. Si un lien symbolique existe déjà et que l’utilisateur essaie de l’ajouter, aucune modification n’est apportée au fichier de configuration et les éléments suivants apparaissent :

The file /dev/work already exists.

Failure. Could not create a symlink.

Pour supprimer un lien symbolique de la listedevlabel, utilisez la commande suivante : devlabel remove -s symlink

L’entrée est retirée du fichier de configuration et le lien symbolique est supprimé.

Afin de déterminer l’état des liens symboliques dedevlabel, utilisez la commande suivante : devlabel status

Cette dernière renvoie une sortie semblable à l’extrait suivant :

lrwxrwxrwx 1 root 9 Apr 29 13:20 /dev/work -> /dev/hdb1 lrwxrwxrwx 1 root 9 Apr 29 13:41 /dev/tcf -> /dev/hda1

7.1.1. Périphériques hotplug

Un programme portant le nomhotplugeffectue ces opérations lorsqu’un événement système tel que l’ajout ou la suppression de matériel, se produit alors que le système tourne. Par exemple, si un disque dur USB ou un lecteur de carte mémoire USB est relié au système,hotplugnotifie les utilisateurs

Chapitre 7. Noms de périphériques déterminés par l’utilisateur 29 en enregistrant un message dans le fichier journal du système (/var/log/messages) et charge les modules noyau appropriés afin que le périphérique puisse fonctionner.

Lorsqu’un périphérique PCI, USB ou IEEE 1394 (aussi connu sous le nom FireWire) est branché, les scriptshotplugrelancent égalementdevlabelafin que le support de stockage amovible se voit attribuer un nom de périphérique défini par l’utilisateur (tel que/dev/usbcard), et de manière optionnelle, il peut monter automatiquement le périphérique de stockage.

Après l’insertion du lecteur de cartes USB dans le port USB de l’ordinateur, exécutez la commande suivante en étant connecté en tant que super-utilisateur (où/dev/sda1correspond au nom de péri-phérique de la carte mémoire et/dev/usbcardau nom de périphérique défini par l’utilisateur devant être utilisé) :

devlabel add -d /dev/sda1 -s /dev/usbcard --automount

Cette commande ajoute une entrée concernant le point de montage dans /etc/sysconfig/devlabelet crée un lien symbolique de/dev/usbcardvers/dev/sda1. L’option--automountdansdevlabelspécifie que le périphérique devrait être automatiquement monté lorsquedevlabelredémarre, si une de ses entrées se trouve dans/etc/fstabet si le périphérique existe (c-à-d lorsque le système trouve un périphérique ayant le même UUID).

Le programmeupdfstabscanne les bus IDE et SCSI des nouveaux périphériques et ajoute les entrées les concernant dans/etc/fstab, si ces dernières n’existe pas encore. Il ajoute également des entrées pour les périphériques USB puisqu’ils apparaissent en tant que périphériques SCSI. Reportez-vous à la page de manuel relative àupdfstabpour obtenir de plus amples informations.

Lors de l’insertion d’un périphérique USB,hotpluglance le programmeupdfstabqui ajoute dans le fichier/etc/fstabune entrée relative au périphérique de stockage (tel que la carte mémoire) si il existe. (Si un lecteur de cartes ne contenant pas de carte est inséré, aucune entrée n’est ajoutée.) La ligne ajoutée contient le nom du périphérique réel (tel que/dev/sda1) et l’optionkudzu. L’option kudzuindique àKudzu1qu’il peut effacer la ligne si le périphérique n’existe pas. Puisquedevlabel a besoin de cette ligne, l’optionkudzudoit être supprimée afin que la ligne demeure dans le fichier.

Il est également nécessaire de changer le nom de périphérique au profit du nom de périphérique devlabel(tel que/dev/usbcard) et de créer le point de montage (tel que/mnt/usbcard).

Après avoir modifié la ligne, elle devrait ressembler à l’extrait suivant : /dev/usbcard /mnt/usbcard auto noauto,owner 0 0

En raison de--automount, lorsquedevlabelest redémarré, le support de stockage dans le péri-phérique du lecteur de cartes USB est monté dans/mnt/usbcardlorsque le périphérique USB est branché dans l’ordinateur. L’astuce consiste à insérer la carte dans le lecteur de cartes USB, avant de le brancher dans l’ordinateur. Si la carte n’est pas préalablement dans le lecteur,devlabelne peut pas détecter le périphérique de stockage et n’est par conséquent pas en mesure de le monter automatiquement.

Si le lecteur de cartes USB est déjà branché sans contenir de carte, lors de l’insertion de cette der-nière, exécutez en tant que super-utilisateur la commandedevlabel restartpour monter la carte mémoire.

7.2. Explication du processus

La commandedevlabel restartest appelée aussi bien par le script/etc/rc.sysinitlors du démarrage du système que par les scripts appropriés figurant dans le répertoire/etc/hotplug/. 1. Kudzuest un outil de détection du matériel qui est lancé au démarrage afin de déterminer le matériel ajouté ou retiré du système.

30 Chapitre 7. Noms de périphériques déterminés par l’utilisateur L’optionrestartdedevlabelentraîne la lecture de la liste des périphériques figurant dans le fichier de configuration (/etc/sysconfig/devlabel) et suit le lien symbolique afin de déterminer si le périphérique existe toujours à son emplacement précédent, tel que/dev/hdb1.

Device name incorrectly detected for symlink /dev/work!

The device /dev/hdb1 is now /dev/hdd1.

The symlink /dev/work will now point to the new device name.

Si un disque avec un UUID n’est pas détecté (par exemple dans le cas où un disque a été retiré), le message suivant apparaît :

The device /dev/hdb1 no longer seems to exist. Because of this, the symlink /dev/work -> /dev/hdb1 will not be available. The reference to this symlink in /etc/sysconfig/devlabel will be ignored.

L’entrée correspondant au périphérique n’est pas effacée du fichier de configuration, elle n’est sim-plement pas prise en considération.

7.3. Ressources supplémentaires

Pour obtenir de plus amples informations surdevlabel, reportez-vous aux ressources mentionnées ci-après.

7.3.1. Documentation installée

man devlabel— La page de manuel relative àdevlabel.

man updfstab— La page de manuel relative au programmeupdfstab, qui est appelé par hot-pluglors de l’insertion d’un périphérique USB.

man hotplug— La page de manuel relative àhotplug.

7.3.2. Sites Web utiles

http://www.dell.com/us/en/esg/topics/power_ps1q03-lerhaupt.htm — DansResolving Device Re-naming Issues in Linux, le développeur qui a écrit le programmedevlabel, explique son fonction-nement.

http://www.lerhaupt.com/devlabel/devlabel.html — La page du projet du développeur.

Chapitre 8.