【发布时间】:2023-03-04 19:26:01
【问题描述】:
我有多个 udev 规则来检查 ATTRS{name}=="abc123" 并在该设备存在时调用各种函数。这些 udev 规则位于多个位置,因为这是在 bitbake 中为自定义嵌入式操作系统创建的。现在,如果我想更改此设备以测试不同的硬件,每次更改每个 ATTR{name} 调用都太耗时了。
我的解决方案是定义一个 var,例如$UDEVVAR="[device_name]" 在某个 conf 文件中(待确定),然后将每个 ATTR{name} 调用更改为 ATTR{name}=="${UDEVVAR}" 之类的内容。
我已经在为概念证明编写的本地规则中测试了这种方法,尽管该规则没有调用。这个地方规则有点不同,虽然遵循相同的概念。无论我放在哪里的闪存驱动器都没有定义 ATTR{name},所以我使用了 USB 鼠标和那个闪存驱动器。这个 udev 规则是:
SUBSYSTEM=="${UDEVVAR}", ACTION=="add", RUN+="/usr/local/bin/trigger.sh"
trigger.sh 只是将日期时间戳写入日志文件。将 SUBSYSTEM 硬编码为 =="block" 时,规则调用成功,但在定义 UDEVVAR="block" 时,规则不会被调用。这个想法是,如果可行,那么我将定义 UDEVVAR="hidraw" 来测试鼠标。
我似乎找不到太多关于任何人试图做这样的事情的文档。我想我犯了某种语法错误,或者可能 udev 规则不允许这样的事情。
感谢您的帮助!
【问题讨论】:
标签: linux embedded-linux bitbake udev