You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.04 LTS重启后符号链接失效求助

解决Ubuntu 16.04中USB密码键盘符号链接重启失效的问题

这个问题我碰到过好多次——手动创建的/dev/ttyS5符号链接在重启后会变成死链接,而且还赖在/dev目录里,导致你重新执行ln -s时提示"链接已存在"。核心原因是/dev/ttyACM0是USB设备动态生成的节点,系统重启时它的加载时机晚于你手动创建链接的时间,而/dev作为临时文件系统,原本应该清空的死链接却因为某些机制残留了下来。

最靠谱的持久化方案是用udev规则,它会在USB设备被系统识别的瞬间自动创建符号链接,完全不用手动干预。具体步骤如下:

1. 获取USB键盘的专属设备标识

首先要拿到你的USB密码键盘的厂商ID和产品ID,这样udev规则只会针对这台设备生效,不会影响其他USB串口设备:

sudo udevadm info -a -n /dev/ttyACM0 | grep -E "idVendor|idProduct"

执行后会输出类似这样的内容:

ATTRS{idVendor}"1234"
ATTRS{idProduct}
"5678"

把这两个值记下来,后面要用到。

2. 创建自定义udev规则文件

在/etc/udev/rules.d/目录下创建一个规则文件(这个目录的规则会被系统自动加载):

sudo nano /etc/udev/rules.d/99-usb-keyboard.rules

在文件里写入以下内容,把xxxx和yyyy替换成你刚才拿到的厂商ID和产品ID:

SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", SYMLINK+="ttyS5"

保存退出(nano里按Ctrl+O,回车确认,再按Ctrl+X)。

3. 加载新规则并触发生效

让系统重新加载udev规则,这样不用重启就能测试效果:

sudo udevadm control --reload-rules && sudo udevadm trigger

4. 验证效果

现在拔掉你的USB密码键盘,再重新插上,然后查看链接是否正常:

ls -l /dev/ttyS5

如果输出显示它指向/dev/ttyACM0,说明规则生效了。重启系统后,这个链接会自动创建,再也不用手动删除重建了。

补充说明

为什么手动创建的链接不靠谱?因为/dev是临时文件系统,理论上重启后内容会清空,但实际中死链接可能残留;而且系统启动时ttyACM0还没被识别出来,手动创建的链接从一开始就是无效的。udev规则是在设备实际被系统检测到的时刻触发创建,完美避开了这些问题。

内容的提问来源于stack exchange,提问作者Simon Sande

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:20:45