Certains logiciels que vous voudriez installer plus tard (par
exemple divers lecteurs multimédia) s'attendent à ce que les liens
/dev/cdrom et /dev/dvd existent. Aussi, il peut être intéressant
d'ajouter des références à ces liens dans /etc/fstab
. Pour chaqun de vos lecteurs CD-ROM,
trouvez le répertoire correspondant dans /sys
(par exemple cela peut être /sys/block/hdd
) et lancez la commande
suivante :
udevadm test /sys/block/hdd
Regardez les lignes contenant la sortie de divers programmes *_id.
Il y a deux approches pour créer les liens symboliques. La première est d'utiliser le nom du modèle et numéro de série, la deuxième 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 similaire à ce qui suit :
cat >/etc/udev/rules.d/82-cdrom.rules << EOF
# Custom CD-ROM symlinks
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 du livre fonctionnent correctement, soyez avertit que Udev ne reconnait pas l'anti-slash comme caractère pour continuer une ligne. Si vous modifiez les règles Udev avec un éditeur, assurez-vous de laisser chaque règle sur une seule ligne physique.
De cette manière, les liens symboliques resteront corrects même si
vous déplacez les périphériques à des positions différentes sur le
bus IDE, mais le lien symbolique /dev/cdrom
ne sera pas remplace si le vieux
lecteur est remplacé par un nouveau.
La clef SUBSYSTEM=="block" est requise pour éviter de correspondre
aux périphériques SCSI génériques. Sans cela, dans le cas des
lecteurs CD-ROM SCSI, les liens symboliques pointeront parfois vers
/dev/srX
(correct) et parfois vers
/dev/sgX
, ce qui est incorrect.
La seconde approche fonctionne ainsi :
cat >/etc/udev/rules.d/82-cdrom.rules << EOF
# Custom CD-ROM symlinks
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 manière, les liens symboliques resteront correctes même si vous remplacez les périphériques avec d'autres modèles, mais que vous gardez la position sur le bus IDE. La clef ENV{ID_TYPE}=="cd" s'assure que le lien symbolique disparraisse après que vous mettez autre chose qu'un lecteur CD-ROM à cette position sur le bus.
Bien sûr il est possible de mélanger les deux approches.
Comme expliqué dans Section 11.5,
« Manipulation des périphériques et modules »,
l'ordre dans lequel les périphériques avec les mêmes fonctions
apparaissent dans /dev
est surtout
aléatoire. Par exemple si vous avez un webcam USB et un tuner TV,
parfois /dev/video0
sera la caméra et
/dev/video1
le tunner, et parfois
après un redémarrage l'ordre est inversé. Pour toutes les classes
de matériels sauf les cartes sons et les les cartes réseau, cela
est correctible en créant des règles udev pour des liens
persistants. Le cas des cartes réseau est couvert séparément dans
Networking
Configuration et la configuration des cartes sons peut être
trouvée dans CBLFS.
Pour chaque périphérique qui pourrait avoir ce problème, (même si
le problème n'existe pas dans votre distribution Linux actuelle),
trouvez le répertoire correspondant dans /sys/class
ou /sys/block
. Pour les périphériques vidéo, cela
peut être /sys/class/video4linux/video
. Toruvez les attributs qui
identifient ces périphériques uniquement (typiquement, les ID du
fabriquant et du produit ou le numéro de série) :
X
udevadm info -a -p /sys/class/video4linux/video0
Ensuite écrivez des règles qui créent les liens symboliques, par exemple :
cat >/etc/udev/rules.d/83-duplicate_devs.rules << EOF
# Persistent symlinks for webcam and tuner
KERNEL=="video*", SYSFS{idProduct}=="1910", SYSFS{idVendor}=="0d81", \
SYMLINK+="webcam"
KERNEL=="video*", SYSFS{device}=="0x036f", SYSFS{vendor}=="0x109e", \
SYMLINK+="tvtuner"
EOF
Le résultat est que /dev/video0
et
/dev/video1
réfèrent toujours soit au
tuner soit à la webcam de manière aléatoire (et donc ne devraient
pas être utilisés directement), mais les liens symboliques
/dev/tvtuner
et /dev/webcam
pointent toujours vers le bon
périphérique.