dashingcow 2024-08-15 14:01 采纳率: 0%
浏览 19

udev配置没有按照规则生成文件

打算使用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链接文件 是为什么?

  • 写回答

2条回答 默认 最新

  • 一直免费一直爽 2024-08-15 14:02
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在Linux系统中,udev是一个设备管理器,负责管理设备节点的创建和删除。它通过读取规则文件来决定如何为设备创建设备节点或符号链接。尽管udevd守护进程已经在运行,但有时候可能会遇到规则不生效的问题,导致预期的链接文件未能创建。这种情况可能由多种原因引起,以下是一些可能的原因和解决方法:

    1. 规则语法错误

      • 引号问题:应该使用英文标点,而非中文引号。
      • 操作符错误:确保所有的操作符,如==+=等都是正确无误的。
      • 关键字错误:检查所有的关键字是否正确拼写,如ACTIONSUBSYSTEM等。
    2. 规则文件位置不正确

      • 正确的目录:规则文件应放置在/etc/udev/rules.d/目录下。
      • 文件命名规范:规则文件应以.rules.rules.d/结尾,并确保文件名符合系统要求。
    3. 规则文件权限问题

      • 可读性:确保规则文件对于udev进程是可读的。
      • 执行位:如果规则文件中包含了需要执行的内容,确保文件具有执行权限。
    4. udev缓存或状态问题

      • 重置udev状态:运行udevadm control --reload-rules来重新加载规则。
      • 重启udev服务:尝试重启udev服务以清除潜在的缓存问题。
    5. 内核uevent未正确传递

      • 内核与udev通信:确保内核能够正确地发送uevent到udev守护进程。
      • 硬件支持:检查硬件是否被内核支持并正确枚举。
    6. udev版本兼容性问题

      • 规则兼容性:确认所写的规则与当前系统的udev版本兼容。
      • 升级问题:如果是在系统升级后出现的问题,可能需要更新规则以匹配新的udev版本。
    7. 系统配置问题

      • udev配置文件:检查/etc/udev/udev.conf文件中的配置是否正确。
      • 系统环境变量:确认系统环境变量没有影响到udev的正常运作。
    8. 设备识别问题

      • VID和PID正确性:验证设备的厂商ID (VID) 和产品ID (PID) 是否与规则中指定的一致。
      • 设备连接测试:尝试连接设备并使用udevadm monitor查看设备属性以确认设备被正确识别。
    9. 日志和调试

      • 查看日志:检查系统日志以获取udev操作的详细信息。
      • 调试工具:使用udevadm test /path/to/device来测试特定设备的规则应用情况。

    总的来说,这些是从配置和系统角度对问题进行排查的一些方法。在处理这类问题时,建议首先从基础的语法和文件位置开始排查,逐步深入到系统配置和内核通信层面。通过这种方法,可以系统地定位并解决udev规则未按预期生效的问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月15日