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