33.4. 关键字选择

要唯一识别设备并区分开多个设备,有一个独特属性对于使用 udev 规则非常重要。以下是一些标准关键字的示例:

SUBSYSTEM

子系统,它的设备为零部件

BUS

设备总线类型

KERNEL

内核使用的设备名

ID

总线上的设备编号(例如,PCI 总线 ID)

SYSFS{...}

sysfs 设备特性,如标签、厂商或序列号

关键字 SUBSYSTEMID 可能非常有用,但是通常会使用关键字 BUSKERNELSYSFS{...}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" 

从输出信息中,查找不会更改的合适关键字。请记住,不能在一个规则中使用不同目录下的关键字。