主要的udev 主配置文件是 /etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:
udev_root=/dev/ # 设置的绝对路径,相当于创建 chroot 的根。 udev_rules=/etc/udev/rules.d/ #规则的存放地址 udev_log=err # 日志的输入级别 |
匹配键和赋值键操作符解释见下表:
操作符 匹配或赋值t 解释 |
udev 规则的匹配键 :
键 含义 ---------------------------------------- ACTION 事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )。 KERNEL 在内核里看到的设备名字,比如sd*表示任意SCSI磁盘设备 DEVPATH 内核设备录进,比如/devices/* SUBSYSTEM 子系统名字,例如:sda 的子系统为 block。 BUS 总线的名字,比如IDE,USB DRIVER 设备驱动的名字,比如ide-cdrom ID 独立于内核名字的设备名字 SYSFS{ value} sysfs属性值,他可以表示任意 ENV{ key} 环境变量,可以表示任意 PROGRAM 可执行的外部程序,如果程序返回0值,该键则认为为真(true) RESULT 上一个PROGRAM调用返回的标准输出。 NAME 根据这个规则创建的设备文件的文件名。 注意:仅仅第一行的NAME描述是有效的,后面的均忽略. 如果你想使用使用两个以上的名字来访问一个设备的话,可以考虑SYMLINK键。 SYMLINK 为 /dev/下的设备文件产生符号链接。由于 udev 只能为某个设备产生一个设备文件, 所以为了不覆盖系统默认的 udev 规则所产生的文件,推荐使用符号链接。 OWNER 设备文件的属组 GROUP 设备文件所在的组。 MODE 设备文件的权限,采用8进制 RUN 为设备而执行的程序列表 LABEL 在配置文件里为内部控制而采用的名字标签(下下面的GOTO服务) GOTO 跳到匹配的规则(通过LABEL来标识),有点类似程序语言中的GOTO IMPORT{ type} 导入一个文件或者一个程序执行后而生成的规则集到当前文件 WAIT_FOR_SYSFS 等待一个特定的设备文件的创建。主要是用作时序和依赖问题。 PTIONS 特定的选项: last_rule 对这类设备终端规则执行; ignore_device 忽略当前规则; ignore_remove 忽略接下来的并移走请求。 all_partitions 为所有的磁盘分区创建设备文件。 |
udev 规则所需要信息的查询
常用的查上面匹配键信息的命令
udevinfo -a -p $(udevinfo -q path -n /dev/sda1 ) 上面的命令两次使用udevinfo: 第一次是返回sysfs设备路径(他通常和我们看到的Linux设备文件名所在路径--/dev/hda--不同); 第二次才是查询这个设备路径,结果将是非常常的syfs信息汇总 udevinfo -a -p /sys/class/net/eth0 scsi_id -g -s /block/sda scsi_id -g -x -s /block/sda/sda3 ata_id /dev/hda udevadm info -q env -n /dev/xxx 查看某个设备的env |
udev 信息的测试和生效
查出来后,根据上面文件中的内容写规则后,怎么测试
udevtest /block/sda start_dev #命令重启 udev守护进程 本操作会对所有的设备重新查询规则目录下所有的规则文件,然后执行所匹配的规则里的行为。 通常使用该命令让新的规则文件立即生效。
udevadm control --reload-rules udevadm monitor --property --udev |