Comme expliqué à la Section 7.3,
« Manipulation des périphériques et modules »,
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 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 se corriger en créant des règles
Udev pour des liens symboliques constants personnalisés. Le cas des
cartes réseau est couvert de façon séparée dans Section 7.2,
« Configuration générale du réseau », et vous pouvez
trouver la configuration des cartes son dans
BLFS.
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 permanent vers la webcam et le tuner
KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \
SYMLINK+="webcam"
KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{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 symboliques /dev/tvtuner
et /dev/webcam
qui pointent toujours vers le bon
périphérique.