关于在/dev目录创建符号链接的作用及udev规则相关技术疑问
关于在/dev目录创建符号链接的作用及udev规则相关技术疑问
嘿,我来帮你把这些关于udev规则和/dev符号链接的疑问理清楚!
首先说下/dev里的符号链接到底有啥用?
/dev目录下的原生设备节点名字经常是动态变化的——比如你插个USB串口设备,这次可能是/dev/ttyUSB0,下次插另一个USB口或者重启后就变成/dev/ttyUSB1了。要是每次都要查设备对应哪个节点,不管是写脚本还是手动用设备都超麻烦。
而固定的符号链接(比如/dev/myusb)就解决了这个问题:不管设备插在哪、系统怎么分配节点名,这个软链接都会精准指向你的目标设备。你之后访问设备直接用/dev/myusb就行,不用再纠结动态节点名的变化,对自动化脚本、程序调用或者日常使用都友好太多啦。
那这个符号链接是指向啥的?
它会指向系统为你的USB设备自动生成的原始设备节点。比如可能是/dev/bus/usb/001/005这类对应USB总线位置的节点,要是你的设备是串口类的,也可能指向/dev/ttyUSBx这类串口节点。udev会根据你规则里的匹配条件,找到对应设备的原始节点,再把/dev/myusb链接过去。
最后来拆解你给出的这条udev规则
这条规则是用来精准匹配你的USB设备并创建符号链接的,我给你拆成每段解释:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb"
ACTION=="add":只有当设备被插入系统(也就是触发“添加”动作)时,这条规则才会生效SUBSYSTEM=="usb":限定只对USB子系统的设备生效,不会影响其他类型的设备ATTRS{idVendor}=="0461"和ATTRS{idProduct}=="4d81":这俩是设备的唯一标识(厂商ID和产品ID),用来精准定位你要操作的那台USB设备,不会误匹配其他USB设备SYMLINK+="myusb":给匹配到的设备在/dev目录下创建一个名为myusb的符号链接,+号表示如果设备已有其他符号链接,不会覆盖,而是新增这一个
备注:内容来源于stack exchange,提问作者Dr. Chocolate




