符号链接的 udev 规则在操作系统启动时不起作用

符号链接的 udev 规则在操作系统启动时不起作用

我有一条udev规则,将某个 USB 设备安装到/media我确认工作的自定义安装点,并且它位于我的用户空间(例如/home/myuser/a.rules)。我创建了一个从 say/etc/udev/rules.d/52-link-a.rules到它的符号链接。现在,操作系统启动,然后似乎无法安装到该特定点,而是安装到通用的东西/media/myuser/CMSTICKM,我看到 nautilus 弹出,USB 中的文件夹打开。

我可以通过停止符号链接并复制 udev 规则来解决此问题/etc/udev/rules.d/。我只能假设,但是当 Ubuntu 启动时,符号链接发生在systemd-udevd启动之前,因此不会读取链接的自定义 udev 规则,然后挂载失败,但不完全确定。有人可以解释一下为什么吗?

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS

答案1

我也刚刚遇到这个问题。我怀疑 udev 在启动过程中加载得太早,以至于在/home安装之前只有根分区可用。因此,当 udev 加载时,您的符号链接会出现损坏,因为目标文件尚不存在。

我想一种解决方案是在安装分区后重新加载 udev 配置,但这不会将任何新规则应用于已检测到的硬件。

最好的解决方案(如果您需要将规则应用于启动期间存在的硬件)可能是找出应用规则的其他方法,例如使用 rsync 将它们复制到/etc/udev/rules.d/并忘记符号链接。

相关内容