Certains logiciels que vous pourriez vouloir installer plus tard
(comme des lecteurs multimédias) s'attendent à ce que les liens
symboliques /dev/cdrom
et
/dev/dvd
existent et pointent vers le
lecteur CD-ROM ou DVD-ROM. De plus, il peut être pratique de mettre
des références à ces liens symboliques dans /etc/fstab
. Pour chacun de vos périphériques
CD-ROM, trouvez le répertoire correspondant sous /sys
(cela peut être par exemple /sys/block/hdd
) et lancez une commande
ressemblant à ce qui suit :
udevadm test /sys/block/hdd
Regardez les lignes contenant la sortie des divers programmes *_id.
Il y a deux approches pour créer des liens symboliques. La première consiste à utiliser le nom de modèle et le numéro de série, la seconde est basée sur l'emplacement du périphérique sur le bus. Si vous allez utiliser la première approche, créez un fichier qui ressemble à ce qui suit :
cat >/etc/udev/rules.d/82-cdrom.rules << EOF
# Liens symboliques pour le lecteur CD-ROM personnalisés
SUBSYSTEM=="block", ENV{ID_MODEL}=="SAMSUNG_CD-ROM_SC-148F", \
ENV{ID_REVISION}=="PS05", SYMLINK+="cdrom"
SUBSYSTEM=="block", ENV{ID_MODEL}=="PHILIPS_CDD5301", \
ENV{ID_SERIAL}=="5VO1306DM00190", SYMLINK+="cdrom1 dvd"
EOF
Bien que les exemples de ce livre fonctionnent correctement, gardez à l'esprit qu'Udev ne reconnaît pas les antislash pour poursuivre une ligne. Si vous modifiez des règles Udev avec un éditeur, prenez garde à laisser chaque règle sur une ligne physique.
De cette façon, les liens symboliques resteront bons même si vous
déplacez les périphériques dans des positions différentes sur le
bus IDE mais le lien symbolique /dev/cdrom
ne sera pas créé si vous remplacez le
vieux SAMSUNG CD-ROM par un nouveau lecteur.
La clé SUBSYSTEM=="block" est nécessaire afin d'éviter une
correspondance entre les périphériques génériques SCSI. Sans cela,
avec des lecteurs de CD-ROM SCSI, les liens symboliques pointeront
tantôt vers les bons périphériques /dev/srX
, tantôt vers /dev/sgX
, ce qui est faux.
La seconde approche donne :
cat >/etc/udev/rules.d/82-cdrom.rules << EOF
# Liens symboliques pour le lecteur CD-ROM personnalisés
SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", \
ENV{ID_PATH}=="pci-0000:00:07.1-ide-0:1", SYMLINK+="cdrom"
SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", \
ENV{ID_PATH}=="pci-0000:00:07.1-ide-1:1", SYMLINK+="cdrom1 dvd"
EOF
De cette façon, les liens symboliques demeureront corrects même si vous remplacez des lecteurs par des modèles différents mais que vous placez sur les anciennes positions sur le bus IDE. La clé ENV{ID_TYPE}=="cd" s'assure que le lien symbolique disparaisse si vous mettez quelque chose d'autre qu'un lecteur de CD-ROM dans une telle position sur le bus.
Bien entendu, il est possible de mélanger les deux approches.
Comme expliqué dans le
Section 11.6, “Gestion des périphériques et modules sur
un système CLFS”, l'ordre dans lequel les périphériques
ayant la même fonction apparaissent dans /dev
est essentiellement aléatoire. Par exemple
si vous avez une webcam en USB et un tunner TV, parfois
/dev/video0
renvoie à la webcam, et
/dev/video1
renvoie au tuner, et
parfois après un redémarrage l'ordre s'inverse. Pour toutes les
classes de matériel sauf les cartes son et les cartes réseau, ceci
peut être corrigé en créant des règles udev pour des liens
symboliques constants personnalisés. Le cas des cartes réseau est
traité séparément dans la Networking
Configuration et vous pouvez trouver la configuration des
cartes son dans CBLFS.
Pour chacun des périphériques susceptibles d'avoir ce problème
(même si le problème n'apparaît pas dans votre distribution Linux
actuelle), trouvez le répertoire correspondant sous /sys/class
ou /sys/block
. Pour les périphériques vidéo, cela
peut être /sys/class/video4linux/video
. Calculez les attributs
qui identifient de façon unique un périphérique (normalement basé
sur l'ID du fabricant et du produit et/ou les numéros de
série) :
X
udevadm info -a -p /sys/class/video4linux/video0
Puis, écrivez des règles qui créent les liens symboliques, comme :
cat >/etc/udev/rules.d/83-duplicate_devs.rules << EOF
# Liens symboliques constants pour webcam et tuner
KERNEL=="video*", SYSFS{idProduct}=="1910", SYSFS{idVendor}=="0d81", \
SYMLINK+="webcam"
KERNEL=="video*", SYSFS{device}=="0x036f", SYSFS{vendor}=="0x109e", \
SYMLINK+="tvtuner"
EOF
Il en résulte que les périphériques /dev/video0
et /dev/video1
renvoient encore de manière aléatoire
au tuner et à la webcam (et donc ne devrait jamais être utilisé
directement), mais il y a des liens smboliques /dev/tvtuner
et /dev/webcam
qui pointent toujours vers le bon
périphérique.
Vous pouvez trouver plus d'informations sur l'écriture de règles
Udev dans /usr/share/doc/udev/writing_udev_rules/index.html
.