Skip to content

udevイベントの調査方法

デバイスの属性などは以下のコマンドで確認できる。

Terminal window
udevadm info -n /dev/sda -a

例えばUSBストレージデバイスの場合はLinuxのUSBツリー構造のようにツリー状をしている。udevadm コマンドの出力にUSBコントローラなどのデバイスも含まれていて混乱するけれど、より範囲が限定的なものは上に並ぶので、基本的にはより上にある属性から使えるものを選ぶといい。

/etc/udev/rules.d 以下に設定を追加しておけば読み込まれる。

設定のリロードは次のコマンド。

Terminal window
run0 udevadm control --reload-rules
run0 udevadm trigger

設定が適用できているか確認する

Section titled “設定が適用できているか確認する”

設定が反映されるかどうかは次のコマンドで様子を見れるが、いまいち読み方が分からない。

Terminal window
dev=$(find /sys/devices -name 'idVendor' | xargs grep -l 0590 | xargs dirname)
run0 udevadm test $dev

USBデバイスの場合は、実際に反映されているかをデバイスファイルから読み取っても良い。

Terminal window
$ lsusb
Bus 003 Device 033: ID 3507:000b ZENAIM ARCADE CONTROLLER
$ ls -l /dev/bus/usb/003/033
crw-rw-r-- 1 root root 189, 288 6月 15 22:53 /dev/bus/usb/003/033

上記の例では root しか書き込みができないのでコントローラーとしては使えない。

どのようなイベントが発行されているか確認する

Section titled “どのようなイベントが発行されているか確認する”

実際のイベントは udevadm monitor で確認できる。以下は udisks2 でアンマウントとマウントを行ったときの様子。

Terminal window
$ udevadm monitor [-p]
KERNEL[10495.114220] remove /devices/virtual/bdi/btrfs-5 (bdi)
KERNEL[10495.115330] change /devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7.3/3-7.3:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)
UDEV [10495.116510] remove /devices/virtual/bdi/btrfs-5 (bdi)
UDEV [10495.142949] change /devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7.3/3-7.3:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)
KERNEL[10496.262533] add /devices/virtual/bdi/btrfs-6 (bdi)
UDEV [10496.262755] add /devices/virtual/bdi/btrfs-6 (bdi)
KERNEL[10496.323338] change /devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7.3/3-7.3:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)
UDEV [10496.349239] change /devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7.3/3-7.3:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)

ラベル等も調べたい場合は -p オプションが利用できる。

Terminal window
$ udevadm monitor -s bdi -p
KERNEL[10683.635455] remove /devices/virtual/bdi/btrfs-6 (bdi)
ACTION=remove
DEVPATH=/devices/virtual/bdi/btrfs-6
SUBSYSTEM=bdi
SEQNUM=5227
UDEV [10683.637416] remove /devices/virtual/bdi/btrfs-6 (bdi)
ACTION=remove
DEVPATH=/devices/virtual/bdi/btrfs-6
SUBSYSTEM=bdi
SEQNUM=5227
USEC_INITIALIZED=10683635475
KERNEL[10688.712968] add /devices/virtual/bdi/btrfs-7 (bdi)
ACTION=add
DEVPATH=/devices/virtual/bdi/btrfs-7
SUBSYSTEM=bdi
SEQNUM=5229
UDEV [10688.714622] add /devices/virtual/bdi/btrfs-7 (bdi)
ACTION=add
DEVPATH=/devices/virtual/bdi/btrfs-7
SUBSYSTEM=bdi
SEQNUM=5229
USEC_INITIALIZED=10688712982