哪些 udev 属性在热插拔/冷插拔期间真正可用?

Rob*_*mer 6 linux udev wlan

Udev 很难调试。\xe2\x80\x93 系统启动期间的原始环境总是与稍后重新运行期间的环境至少有一点偏差。

\n\n

因此,我\xe2\x80\x99m尝试在理解udev的情况下编写udev规则,而不是反复试验。

\n\n

一个大问题是:热插拔/冷插拔期间哪些 udev 属性可用?

\n\n

混乱来自这两个命令:

\n\n
udevadm test /sys/class/net/wlx801f024ddc32\nudevadm info --attribute-walk --path=/sys/class/net/wlx801f024ddc32\n
Run Code Online (Sandbox Code Playgroud)\n\n

两者,例如, list SUBSYSTEM,我知道它可用于 udev-rules 。但只有前者有DEVTYPE(至少对于 wlan 设备而言),而只有后者有KERNEL

\n\n

我实际上在启动期间需要 DEVTYPE (\xe2\x80\x9cwlan\xe2\x80\x9d),但当规则生效时它似乎不可用......

\n

小智 4

这是我的理解:

  • udevadm info -a:显示属性ATTRS{}和设备层次结构。
  • udevadm test:显示ENV{}udev 处理过程中的变量。

它们不显示相同类型的信息。您的 DEVTYPE 变量可能存在并且应该作为 进行测试ENV{DEVTYPE}=="wlan"。但是,应该考虑到 ENV{} 变量是在 udev 处理过程中逐步创建的。因此,规则的顺序很重要,它应该出现在ENV{DEVTYPE}另一个规则创建之后。

您可以通过以下命令分析文件“udev_actions.txt”,以推断事物的排序方式。然后您可以决定“.rules”文件的最佳编号以进行测试ENV{DEVTYPE}

$ sudo udevadm test $DEVPATH 1> udev_ENV.txt 2> udev_actions.txt
Run Code Online (Sandbox Code Playgroud)