测试环境 almalinux9.3
规则配置文件必须以 .rules 为后缀名 udev按照配置文件名的字母顺序来查询全部规则文件,匹配到后会继续匹配其他规则文件。 在规则文件里,除了#开头的行,所有的非空行都为一条规则,一条规则不能扩展到多行。 规则由多个键值对组成,并由逗号隔开,键值对可以分为"条件匹配键值对"(以下简称 "匹配键" )和"赋值键值对"(以下简称 "赋值键"),一条规则可以有多条匹配键和多条赋值键。 匹配键是匹配一个设备属性的所有条件,当一个设备的属性匹配了该规则里所有的匹配键,就认为这条规则生效,然后按照赋值键的内容,执行该规则的赋值。 匹配键: ACTION 事件(uevent)的行为,例如:add(添加设备)、remove(删除设备),udev守护进程帧听来自内核的uevent KERNEL 内核设备名称,例如:sda,cdrom; DEVPATH 设备的 devpath 路径; SUBSYSTEM 设备的子系统名称,例如:sda 的系统为 block; BUS 设备在 devpath 里的总线名称,例如:usb; DRIVER 设备在 devpath 的设备驱动名称,例如:ide-cdrom; ID 设备在 devpath 里的识别号; SYSFS{filename} 设备的 devpath 路径下,设备的属性文件 "filename" 里的内容; ENV{key} 环境变量。在一条规则中,可以设定最多五条环境变量的 匹配键; PROGRAM 调用外部命令; RESULT 外部命令 PROGRAM 的返回结果。 操作符: == 比较键、值,若等于,则该条件满足; != 比较键、值,若不等于,则该条件满足; = 对一个键赋值; += 为一个表示多个条目的键赋值; := 对一个键赋值,并拒绝之后所有对该键的改动。目的是防止后面的规则文件对该键赋值。 赋值键: NAME 在 /dev 下产生的设备文件名。只有第一个对某个设备的 NAME 的赋值行为生效,之后匹配的规则再对设备的 NAME 赋值行为将被忽略。如果没有任何规则对设备的 NAME 赋值,udev 将使用内核设备名称来产生设备文件; SYMLINK 为 /dev/ 下的设备文件产生符号链接。由于 udev 只能为某个设备产生一个设备文件,所以为了不覆盖系统默认的 udev 规则所产生的文件,推荐使用符号链接。 OWNER,GROUP,MODE 为设备设定权限; ENV{key} 导入一个环境变量。 1、查看usb设备的厂商id和设备id [root@localhost rules.d]# lsusb Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 005: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port / Mobile Action MA-8910P Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub ID 067b:2303 VENDOR_ID:MODEL_ID 2、根据厂商id或设备id去udev里匹配 [root@localhost rules.d]# udevadm info /dev/* | grep -C 20 2303 找到 DEVNAME|ID_VENDOR_ID|ID_MODEL_ID|SUBSYSTEM|ID_PATH 这几个字段用于配置自定义设备名称 规则配置文件路径 /etc/udev/rules.d # 根据ID_PATH作为匹配条件 [root@localhost rules.d]# cat usb2console.rules SUBSYSTEM=="tty", ENV{ID_PATH}=="pci-0000:02:00.0-usb-0:2.1:1.0",SYMLINK+="usb2consoleline" # 根据厂商设备id作为匹配条件 [root@localhost rules.d]# cat usb.rules SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="239a", ENV{ID_MODEL_ID}=="80f4",SYMLINK+="usb-pi" SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="067b", ENV{ID_MODEL_ID}=="2303",SYMLINK+="usb-consoleline" 取子系统SUBSYSTEM等于tty,且变量ID_VENDOR_ID等于xxx,且变量ID_MODEL_ID等于xxx时,设置赋值键symbol link等于xxx 重插拔usb测试,查看/dev/usb-*的自定义名称
参考:https://blog.csdn.net/u014674293/article/details/121627305
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5436.html