有没有办法更改给定设备的默认 ATTR{name} [不是设备节点的名称]。编写 udev 规则来执行此操作的简单解决方案最终会导致权限错误,所以我想知道这是否是正确的方法。
答案1
取决于哪种类型的设备
它是一个输入设备(键盘)
不,不重写内核就不行。
该文件是只读的。
$ ls -l /sys/class/input/input0/name
-r--r--r--. 1 root root 4096 Feb 6 12:03 /sys/class/input/input0/name
没有 ioctl() 来设置输入设备的名称(仅用于获取它)。
https://github.com/torvalds/linux/blob/v4.20/include/uapi/linux/input.h#L124
在通用设备级别,当驱动程序检测到特定设备时,无法传递特定设备的参数。您可以将驱动程序与特定设备解除绑定,并且可以尝试手动绑定它,但是绑定时无法传递参数。请参阅 LWN.net 文章,手动绑定和解绑驱动。