如何写ubuntu的rules(基础)

  • 1.系统按照字母表顺序读取rules文件,如果想要被优先读取,可以以0开头命名
  • 2.rules文件中有两种关键词:匹配关键词使用==,分配关键词使用=。
  • 3.匹配关键词指用户不可更改的东西,如KERNEL(设备在内核中的名字)和ATTR(设备的属性)等;分配关键词指用户可以更改的东西,如NAME(设备在/dev下的名字)和MODE(设备权限)等
  • 4.SYMLINK使用+=,是设备的链接或叫别名,我们一般使用SYMLINK,不修改NAME。也可以设置多个链接SYMLINK+="cdrom cdrom0"
  • 5.可以使用命令udevadm info -a -p $(udevadm info -q path -n /dev/video0)查询设备信息,这里是摄像头。本机输出如下
  looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/video4linux/video0':
    KERNEL=="video0"
    SUBSYSTEM=="video4linux"
    DRIVER==""
    ATTR{dev_debug}=="0"
    ATTR{index}=="0"
    ATTR{name}=="KS2A418-60: KS2A418-60"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0':
    KERNELS=="1-10:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="uvcvideo"
    ATTRS{authorized}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bInterfaceClass}=="0e"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{iad_bFirstInterface}=="00"
    ATTRS{iad_bFunctionClass}=="0e"
    ATTRS{iad_bFunctionProtocol}=="00"
    ATTRS{iad_bFunctionSubClass}=="03"
    ATTRS{iad_bInterfaceCount}=="02"
    ATTRS{interface}=="KS2A418-60"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-10':
    KERNELS=="1-10"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="ef"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bDeviceSubClass}=="02"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 4"
    ATTRS{bcdDevice}=="4607"
    ATTRS{bmAttributes}=="80"
    ATTRS{busnum}=="1"
    ATTRS{configuration}==""
    ATTRS{devnum}=="4"
    ATTRS{devpath}=="10"
    ATTRS{idProduct}=="4920"
    ATTRS{idVendor}=="2304"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="KINGSEN"
    ATTRS{maxchild}=="0"
    ATTRS{product}=="KS2A418-60"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{speed}=="480"
    ATTRS{urbnum}=="5070"
    ATTRS{version}==" 2.00"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{authorized_default}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0415"
    ATTRS{bmAttributes}=="e0"
    ATTRS{busnum}=="1"
    ATTRS{configuration}==""
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{idProduct}=="0002"
    ATTRS{idVendor}=="1d6b"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 4.15.0-65-generic xhci-hcd"
    ATTRS{maxchild}=="16"
    ATTRS{product}=="xHCI Host Controller"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{serial}=="0000:00:14.0"
    ATTRS{speed}=="480"
    ATTRS{urbnum}=="75"
    ATTRS{version}==" 2.00"

  looking at parent device '/devices/pci0000:00/0000:00:14.0':
    KERNELS=="0000:00:14.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="xhci_hcd"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0330"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{d3cold_allowed}=="1"
    ATTRS{dbc}=="disabled"
    ATTRS{device}=="0xa2af"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{index}=="2"
    ATTRS{irq}=="121"
    ATTRS{label}=="Onboard - Other"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{local_cpus}=="ff"
    ATTRS{msi_bus}=="1"
    ATTRS{numa_node}=="-1"
    ATTRS{revision}=="0x00"
    ATTRS{subsystem_device}=="0xa2af"
    ATTRS{subsystem_vendor}=="0x1849"
    ATTRS{vendor}=="0x8086"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
  • 6.上面显示了设备树中摄像头的所有父节点,一般选择离设备近的父节点的信息,而且只能选择一个父节点
  • 7.例子
# :=表示之后不可更改
SUBSYSTEMS=="usb", ATTRS{idProduct}=="4920", ATTRS{idVendor}=="2304", MODE:="0666", SYMLINK+="my_camera"
# 或者
KERNEL=="video0", KERNELS=="1-10:1.0", MODE:="0666", SYMLINK+="my_camera"
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Ubuntu中,规则文件用于配置设备的属性和行为。这些规则文件位于`/etc/udev/rules.d/`目录下。引用\[2\]中提到了一些常见的配置参数,包括KERNEL、SUBSYSTEMS、ATTRS{idVendor}、ATTRS{idProduct}、MODE和SYMLINK。 其中,KERNEL表示内核设备名称,可以使用通配符来匹配多个设备。例如,如果设备对应的内核设备名称为ttyUSBx,那么KERNEL可以设置为"ttyUSB*"。 ATTRS{idVendor}和ATTRS{idProduct}表示设备的厂商ID和产品ID,可以通过使用`lsusb`命令来查看设备的详细信息,包括厂商ID和产品ID。 MODE表示设备的权限模式,可以使用数字或符号来表示权限。例如,MODE:="0777"表示将设备的权限设置为777,即所有用户都具有读、和执行的权限。 SYMLINK表示在`/dev`目录下创建一个符号链接设备,并命名为SYMLINK对应的值。这样可以方便地通过符号链接来访问设备。 因此,在Ubuntu中配置规则文件时,你可以根据设备的内核名称、厂商ID和产品ID来设置相应的属性,包括权限和符号链接。 #### 引用[.reference_title] - *1* *2* [Ubuntu下USB权限问题以及udev规则文件](https://blog.csdn.net/HERO_CJN/article/details/90232856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀么克瑟拉莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值