要唯一识别设备并区分开多个设备,有一个独特属性对于使用 udev 规则非常重要。以下是一些标准关键字的示例:
子系统,它的设备为零部件
设备总线类型
内核使用的设备名
总线上的设备编号(例如,PCI 总线 ID)
sysfs 设备特性,如标签、厂商或序列号
关键字 SUBSYSTEM 和 ID 可能非常有用,但是通常会使用关键字 BUS、KERNEL 和 SYSFS{...}。udev 配置还提供了调用外部脚本并对其结果求值的关键字。有关详细信息,请参见 udev 手册页。
文件系统 sysfs 提供有关目录树中的硬件信息。每个文件通常只包含一个信息项,如设备名、厂商或序列号。这些文件都可用来与关键字匹配。但是要在一个规则中使用多个 SYSFS 关键字,您只能将相同目录中的文件用做关键字值。工具 udevinfo 有助于查找有用和唯一的关键字值。
您必须找到指向相关设备并包含文件 dev 的 /sys 的一个子目录。这些目录都位于 /sys/block 或 /sys/class 下。如果设备已有设备节点,则 udevinfo 可为您找到正确的子目录。命令 udevinfo -q path -n /dev/sda 将输出 /block/sda。这表示所需目录为 /sys/block/sda。现在使用命令 udevinfo -a -p /sys/block/sda 调用 udevinfo。也可以将这两个命令结合起来使用,如 udevinfo -a -p `udevinfo -q path -n /dev/sda` 中所示。以下内容是从输出中抽取的一部分:
BUS=="scsi" ID=="0:0:0:0"
SYSFS{detach_state}=="0"
SYSFS{type}=="0"
SYSFS{max_sectors}=="240"
SYSFS{device_blocked}=="0"
SYSFS{queue_depth}=="1"
SYSFS{scsi_level}=="3"
SYSFS{vendor}==" "
SYSFS{model}=="USB 2.0M DSC"
SYSFS{rev}=="1.00"
SYSFS{online}=="1" 从输出信息中,查找不会更改的合适关键字。请记住,不能在一个规则中使用不同目录下的关键字。