デバイスを一意に識別し、複数のデバイスを相互に区別するためには、使用するudevルールでの一意なプロパティが重要となります。ここでは、標準的なキーに関するいくつかの例を示します。
デバイスが属しているサブシステム
デバイスのバスタイプ
カーネルが使用するデバイス名
バスのデバイス番号(たとえば、PCIバスのID)
ラベル、ベンダー、またはシリアル番号のような、sysfsのデバイス属性
SUBSYSTEMとIDの各キーは役に立つこともありますが、通常はBUS、KERNEL、およびSYSFS{...}の各キーが使用されています。udevの設定は、外部スクリプトを呼び出してその結果を評価するためのキーも用意しています。詳細は、udevのmanページを参照してください。
ファイルシステムsysfsは、ハードウェアについての情報をディレクトリツリーとして公開しています。一般的に、各ファイルにはデバイス名、メーカ、シリアル番号など、ただ1項目の情報が含まれます。これらの各ファイルは、キーとマッチングするために用いられます。しかし、1つのルールで複数のSYSFSキーを使用する場合、同じディレクトリの中にあるファイルだけがキー値として使用できます。有効で一意なキー値を見つけるには、ツールudevinfoが役に立ちます。
該当のデバイスを参照していて、devファイルが含まれている/sysの1つのサブディレクトリを見つける必要があります。これらのディレクトリはいずれも、/sys/blockまたは/sys/classの下に配置されています。デバイスにデバイスノードがすでに存在している場合は、 udevinfoが正しいサブディレクトリを見つけられます。udevinfo -q path -n /dev/sdaコマンドは、/block/sdaという出力をします。これは、必要とするディレクトリが/sys/block/sdaであることを意味します。今度は、コマンドudevinfo -a -p /sys/block/sdaを使用して、udevinfoを呼び出します。これら2つのコマンドを組み合わせて、たとえば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"
出力情報から、変化しない適切なキーを探します。1つのルール内では、他のディレクトリにあるキーを使用できないことに注意してください。