首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >udev中的内核在重新启动时不持久

udev中的内核在重新启动时不持久
EN

Unix & Linux用户
提问于 2023-04-12 10:37:44
回答 1查看 23关注 0票数 0

我试图匹配使用udev的设备,并在设备每次连接时(通过RUNS)运行一个命令。设备(一个V4L2 USB摄像头)总是连接到同一个USB端口,所以我想我可以依靠KERNELS属性来匹配它。我一直认为设备的sysfs路径将是持久的,但是对于连接到同一个USB端口的同一设备,我看到了不同的路径和KERNELS值:

代码语言:javascript
复制
$ udevadm info -a /dev/video0
...
  looking at device '/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1.4/3-1.4:1.0/video4linux/video0':
    KERNEL=="video0"
    SUBSYSTEM=="video4linux"
    DRIVER==""
...

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1.4/3-1.4:1.0':
    KERNELS=="3-1.4:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="uvcvideo"
...

现在,在重新启动之后,我得到了不同的值:

代码语言:javascript
复制
$ udevadm info -a /dev/video0
...
  looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/video4linux/video0':
    KERNEL=="video0"
    SUBSYSTEM=="video4linux"
    DRIVER==""
...

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0':
    KERNELS=="1-3:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="uvcvideo"
...

如何编写与连接到USB端口的设备相匹配的可靠udev规则?

我注意到/dev/v4l/by-path中的路径并没有改变,即使/sysfs中的路径发生了变化:/dev/v4l/by-path/pci-0000:00:14.0-usb-0:3:1.0-video-index0 (但我不知道如何利用它来实现我的优势)。

EN

回答 1

Unix & Linux用户

发布于 2023-04-14 07:52:21

结果表明,KERNELS属性对基于USB端口的匹配是不可靠的。然而,我想出了如何利用by-path符号链接:通过SYMLINK=="..."匹配。

对于有问题的设备,这个应该是

代码语言:javascript
复制
SYMLINK=="v4l/by-path/pci-0000:00:14.0-usb-0:3:1.0-video-index0"

还有ID_PATH设备属性,可以以类似的方式使用。

符号链接和设备属性可以使用

代码语言:javascript
复制
udevadm info -q all [device_path_or_name]
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/742675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档