Как поясняется в Раздел 9.3,
«Взаимодействие с устройствами и модулями», порядок отображения
устройства с одинаковой функциональностью в /dev
является, как правило, случайным. Например,
если у вас есть веб камера и TV тюнер, иногда /dev/video0
ссылается на камеру, а /dev/video1
ссылается на TV тюнер, а иногда,
например, после перезагрузки системы, порядок поменяется на
противоположный. Для всех классов оборудования, за исключением
звуковых и сетевых карт, это можно исправить, создав правила udev
для пользовательских постоянных символических ссылок. Случай с
сетевыми картами описан отдельно в Раздел 9.2,
«Настройка сети», и инструкции по настройке звуковых карт можно
найти в
BLFS.
Для каждого из ваших устройств, которые могут иметь такую проблему
(даже если проблема не существует в текущем дистрибутиве Linux ),
найдите соответствующий каталог в /sys/class
или /sys/block
. Для видеоустройств это может быть
/sys/class/video4linux/video
. Определите атрибуты,
которые однозначно идентифицируют устройство (обычно это
идентификаторы поставщика и продукта и/или серийные номера):
X
udevadm info -a -p /sys/class/video4linux/video0
Затем напишите правила, которые создают символические ссылки, например:
cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
# Persistent symlinks for webcam and tuner
KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", SYMLINK+="webcam"
KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", SYMLINK+="tvtuner"
EOF
В результате устройства /dev/video0
и
/dev/video1
по-прежнему случайным
образом ссылаются на TV тюнер и веб-камеру (и, следовательно,
никогда не должны использоваться напрямую), но есть символические
ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают на
правильное устройство.