You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux中/dev/uhid的udev规则启动不生效的原因及解决办法

解决/dev/uhid的udev规则启动时不生效问题

问题原因

/dev/uhid属于内核虚拟misc设备,默认在系统启动早期由内核直接创建——此时udev服务还未完成初始化,无法捕获设备的创建事件,因此不会自动应用对应的udev规则。只有当root权限的进程首次访问该设备时,内核才会触发udev的设备添加事件,udev才会识别设备并执行规则。

解决步骤

1. 创建精准匹配的udev规则

创建专门的uhid规则文件(避免和uinput规则混淆):

sudo touch /etc/udev/rules.d/90-uhid.rules
sudo tee /etc/udev/rules.d/90-uhid.rules <<EOF
SUBSYSTEM=="misc", KERNEL=="uhid", GROUP="uhid", MODE="0660"
EOF

这里明确指定SUBSYSTEM=="misc",确保规则能精准匹配目标设备。

2. 配置用户组权限

如果系统中还没有uhid组,先创建并将目标用户加入该组:

sudo groupadd -r uhid
sudo usermod -aG uhid $USER

3. 添加系统服务触发udev规则

由于启动时udev未捕获设备创建事件,我们需要在udev就绪后强制触发设备扫描:
创建服务文件/etc/systemd/system/uhid-udev-trigger.service:

sudo tee /etc/systemd/system/uhid-udev-trigger.service <<EOF
[Unit]
Description=Trigger udev rules for uhid device
After=systemd-udevd.service

[Service]
Type=oneshot
ExecStart=/usr/bin/udevadm trigger --subsystem-match=misc --property-match=KERNEL=uhid
ExecStartPost=/usr/bin/udevadm settle

[Install]
WantedBy=multi-user.target
EOF

然后启用并加载服务:

sudo systemctl daemon-reload
sudo systemctl enable uhid-udev-trigger.service

4. 验证效果

重启系统后,直接查看/dev/uhid的权限:

ls -l /dev/uhid

正常情况下会输出类似如下内容,说明规则已生效:

crw-rw---- 1 root uhid 10, 239 Aug 12 22:58 /dev/uhid

内容的提问来源于stack exchange,提问作者r4gus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:07:16