打算使用udev机制通过VID,PID给设备创建一个链接文件,规则在/etc/udev/rules.d/目录下,规则如下
ACTION==“add”,SUBSYSTEM==“usb”,ATTRS{idVendor}==“1a86”,ATTRS{idProduct}==“7523”,MODE=“0777”,SYMLINK+=“my_modem”
udevd守护进程已经运行了,但是插拔设备没有创建my_modem链接文件 是为什么?
udev配置没有按照规则生成文件
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
一直免费一直爽 2024-08-15 14:02关注以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
在Linux系统中,udev是一个设备管理器,负责管理设备节点的创建和删除。它通过读取规则文件来决定如何为设备创建设备节点或符号链接。尽管udevd守护进程已经在运行,但有时候可能会遇到规则不生效的问题,导致预期的链接文件未能创建。这种情况可能由多种原因引起,以下是一些可能的原因和解决方法:
-
规则语法错误
- 引号问题:应该使用英文标点,而非中文引号。
- 操作符错误:确保所有的操作符,如
==、+=等都是正确无误的。 - 关键字错误:检查所有的关键字是否正确拼写,如
ACTION、SUBSYSTEM等。
-
规则文件位置不正确
- 正确的目录:规则文件应放置在
/etc/udev/rules.d/目录下。 - 文件命名规范:规则文件应以
.rules或.rules.d/结尾,并确保文件名符合系统要求。
- 正确的目录:规则文件应放置在
-
规则文件权限问题
- 可读性:确保规则文件对于udev进程是可读的。
- 执行位:如果规则文件中包含了需要执行的内容,确保文件具有执行权限。
-
udev缓存或状态问题
- 重置udev状态:运行
udevadm control --reload-rules来重新加载规则。 - 重启udev服务:尝试重启udev服务以清除潜在的缓存问题。
- 重置udev状态:运行
-
内核uevent未正确传递
- 内核与udev通信:确保内核能够正确地发送uevent到udev守护进程。
- 硬件支持:检查硬件是否被内核支持并正确枚举。
-
udev版本兼容性问题
- 规则兼容性:确认所写的规则与当前系统的udev版本兼容。
- 升级问题:如果是在系统升级后出现的问题,可能需要更新规则以匹配新的udev版本。
-
系统配置问题
- udev配置文件:检查
/etc/udev/udev.conf文件中的配置是否正确。 - 系统环境变量:确认系统环境变量没有影响到udev的正常运作。
- udev配置文件:检查
-
设备识别问题
- VID和PID正确性:验证设备的厂商ID (VID) 和产品ID (PID) 是否与规则中指定的一致。
- 设备连接测试:尝试连接设备并使用
udevadm monitor查看设备属性以确认设备被正确识别。
-
日志和调试
- 查看日志:检查系统日志以获取udev操作的详细信息。
- 调试工具:使用
udevadm test /path/to/device来测试特定设备的规则应用情况。
总的来说,这些是从配置和系统角度对问题进行排查的一些方法。在处理这类问题时,建议首先从基础的语法和文件位置开始排查,逐步深入到系统配置和内核通信层面。通过这种方法,可以系统地定位并解决udev规则未按预期生效的问题。
解决 无用评论 打赏 举报-