Comme expliqué à la
Section 7.3, « Manipulation des périphériques et modules
sur un système LFS », 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é
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.