当我将HID设备插入我的Linux盒(OpenSuse 15.3)时,/usr/lib/udev/rules.d/60-persistent-input.rules seem中的UDEV规则就会应用,它就会得到一个MODE="664"。
我想自己处理几个HID设备,而不是按照我的安装UDEV附带的通用规则来处理它们。
是否有办法专门为某些设备(基于VID:PID)制定自己的规则,从而覆盖已经存在的设备?
谢谢你的暗示,托尔斯顿
发布于 2022-09-09 11:13:19
systemd-udev对.rules的支持非常糟糕,所以您能做什么取决于您的系统版本。
man udev建议的官方方法,得到所有systemd版本的支持:基本上在/etc/目录下创建一个规则文件,其名称与您想要覆盖的名称相同。引用:
文件名相同的文件相互替换。/etc/中的文件具有最高优先级,/run/中的文件优先于/usr/下同名的文件。这可以用于在需要时用本地文件覆盖系统提供的规则文件;在/etc/中使用与/usr/lib/中的规则文件同名的符号链接,指向/dev/null,完全禁用规则文件。因此,在您的示例中,您必须将/usr/lib/udev/rules.d/60-persistent-input.rules复制到/etc/udev/rules.d/60-persistent-input.rules,然后编辑感兴趣的行,并添加对ATTRS{idVendor}=="NUMBER1", ATTRS{idProduct}=="NUMBER2"的自定义处理。见这个答案。
.rules,该99取消任何systemd所做的操作。这是最好的解决方案,因为1.点的替代方案意味着您可能会在系统更新中遇到麻烦,这可能会更改系统规则的内容以及它们的名称,因此您的重写就会悄然中断。
那么,实现这一点很困难:我有没有提到systemd-udev坏了?好吧,下面是阻碍您的上游bug的数量:不起作用,不起作用。
您可以做的是创建一个规则,该规则使用RUN命令撤消除较早的系统版本很容易出现种族状况。之外的任何系统。众所周知,250可以工作,但不确定它们是什么时候修复的,所以您可能需要自己测试,例如使用链接bugreport中的测试用例。无论您选择哪种方式,检测VID和PID都是用ATTRS{idVendor}=="VID"和ATTRS{idProduct}=="PID"完成的。
https://stackoverflow.com/questions/69241269
复制相似问题