9.4. 管理设备

9.4.1. 处理重复设备

正如第 9.3 节 “设备和模块管理概述”中所述,那些功能相同的设备在 /dev 中的顺序是随机的。例如,如果您有一个 USB 摄像头和一个电视棒,有时 /dev/video0 会指向摄像头,/dev/video1 指向电视棒,而有时在重启后这个顺序正好颠倒过来。对于所有除了声卡和网卡以外的设备,该问题都可以通过建立 udev 规则以创建持久化符号链接来解决。对于网卡的解决方案在第 9.2 节 “一般网络配置”中单独描述,而声卡配置可以在 BLFS 中找到。

对于您的每个可能有这类问题的设备 (即使在您当前使用的 Linux 发行版上并没有问题),找到 /sys/class/sys/block 中的对应目录。对于视频设备,目录可能是 /sys/class/video4linux/videoX。找出能够唯一确认该设备的属性 (通常是厂商和产品 ID,或者序列号):

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 总会指向正确设备。