我正在尝试将 USB 自动挂载到我的树莓派上,但我似乎无法让我的 udev 规则发挥作用。
我正在使用的代码是:
ACTION=="add", ENV{ID_MODEL}=="Flash_Drive", RUN+="bin/mkdir /home/pi/heyimhere"
这不起作用,因为插入闪存驱动器时不会在该位置创建目录。
我很幸运地使用 USB 来关闭,使用相同的规则,这次使用以下行将其关闭:
ACTION=="remove", ENV{ID_MODEL}=="Flash_Drive", RUN+="sbin/shutdown -h now"
哪个有效 - 一旦你拔掉 USB,它就会关闭。
为什么?我应该使用 ATTR 进行添加吗?
答案1
ENV 与 ATTR/ATTRS
ATTR{文件名}
匹配事件设备的 sysfs 属性值。
ATTRS{文件名}
在 devpath 中向上搜索具有匹配 sysfs 属性值的设备。如果指定了多个 ATTRS 匹配,则所有这些匹配都必须在同一设备上匹配。
ENV{键}
与设备属性值匹配。
如果两者都ENV
包含ATTR
相同的信息 - 您可以使用其中任何一个,没有任何区别。
ENV
相关设备的 s 可以包含从不同父设备派生的值。因此,使用ENV
s 有时您可以同时匹配来自多个父设备的值,而这是不可能的ATTRS
。
创建目录的规则
必须使用绝对路径RUN
键(RUN+="/bin/mkdir /home/pi/heyimhere"
在您的示例中):
如果没有给出绝对路径,则程序预计位于 /usr/lib/udev 中;否则,必须指定绝对路径。
顺便说一句,我不知道为什么你的关闭规则会起作用。它不应该,因为sbin/shutdown
没有领先/
。
从 udev 规则挂载
正如杰森·乌瑞恩提及,你不能使用 udev 进行自动挂载:
请注意,运行访问网络或udev 规则内不允许挂载/卸载文件系统,由于 systemd-udevd.service 上强制执行的默认沙箱。