正如第 9.3 节
“设备和模块管理概述”中所述,那些功能相同的设备在 /dev
中的顺序是随机的。例如,如果您有一个 USB 摄像头和一个电视棒,有时 /dev/video0
会指向摄像头,/dev/video1
指向电视棒,而有时在重启后这个顺序正好颠倒过来。对于所有除了声卡和网卡以外的设备,该问题都可以通过建立 udev
规则以创建持久化符号链接来解决。对于网卡的解决方案在第 9.2 节
“一般网络配置”中单独描述,而声卡配置可以在
BLFS 中找到。
对于您的每个可能有这类问题的设备 (即使在您当前使用的 Linux 发行版上并没有问题),找到 /sys/class
或 /sys/block
中的对应目录。对于视频设备,目录可能是 /sys/class/video4linux/video
。找出能够唯一确认该设备的属性 (通常是厂商和产品
ID,或者序列号):
X
udevadm info -a -p /sys/class/video4linux/video0
然后编写创建符号链接的规则,例如:
cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF"
# 摄像头和电视棒的持久化符号链接
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
仍然会随机指向电视棒和摄像头 (因此不应直接使用它们),但符号链接
/dev/tvtuner
和 /dev/webcam
总会指向正确设备。