7.4. 设备管理

7.4.1. 处理相似性质的设备

正如 第 7.3 节 「设备与模块管理概述」 中解释的,具有相同功能的设备出现在 /dev 目录下的顺序是随机的。假如你有一个 USB 摄像头和一个电视调谐器,/dev/video0 有可能是 USB 摄像头, /dev/video1 是电视调谐器,有时候又可能是反过来的。对于除声卡和网卡外的设备, 都可以通过创建自定义持久性符号链接的 udev 规则来固定。网卡如何设置请看 第 7.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"

# 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 依旧会随机分配给 USB 摄像头和电视调谐器,但是 /dev/tvtuner/dev/webcam 将会固定的分配给正确的设备。