udevイベントの調査方法
デバイスの属性などは以下のコマンドで確認できる。
udevadm info -n /dev/sda -a例えばUSBストレージデバイスの場合はLinuxのUSBツリー構造のようにツリー状をしている。udevadm コマンドの出力にUSBコントローラなどのデバイスも含まれていて混乱するけれど、より範囲が限定的なものは上に並ぶので、基本的にはより上にある属性から使えるものを選ぶといい。
/etc/udev/rules.d 以下に設定を追加しておけば読み込まれる。
設定のリロード
Section titled “設定のリロード”設定のリロードは次のコマンド。
run0 udevadm control --reload-rulesrun0 udevadm triggerトラブル対応
Section titled “トラブル対応”設定が適用できているか確認する
Section titled “設定が適用できているか確認する”設定が反映されるかどうかは次のコマンドで様子を見れるが、いまいち読み方が分からない。
dev=$(find /sys/devices -name 'idVendor' | xargs grep -l 0590 | xargs dirname)run0 udevadm test $devUSBデバイスの場合は、実際に反映されているかをデバイスファイルから読み取っても良い。
$ lsusbBus 003 Device 033: ID 3507:000b ZENAIM ARCADE CONTROLLER
$ ls -l /dev/bus/usb/003/033crw-rw-r-- 1 root root 189, 288 6月 15 22:53 /dev/bus/usb/003/033上記の例では root しか書き込みができないのでコントローラーとしては使えない。
どのようなイベントが発行されているか確認する
Section titled “どのようなイベントが発行されているか確認する”実際のイベントは udevadm monitor で確認できる。以下は udisks2 でアンマウントとマウントを行ったときの様子。
$ 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 オプションが利用できる。
$ udevadm monitor -s bdi -p
KERNEL[10683.635455] remove /devices/virtual/bdi/btrfs-6 (bdi)ACTION=removeDEVPATH=/devices/virtual/bdi/btrfs-6SUBSYSTEM=bdiSEQNUM=5227
UDEV [10683.637416] remove /devices/virtual/bdi/btrfs-6 (bdi)ACTION=removeDEVPATH=/devices/virtual/bdi/btrfs-6SUBSYSTEM=bdiSEQNUM=5227USEC_INITIALIZED=10683635475
KERNEL[10688.712968] add /devices/virtual/bdi/btrfs-7 (bdi)ACTION=addDEVPATH=/devices/virtual/bdi/btrfs-7SUBSYSTEM=bdiSEQNUM=5229
UDEV [10688.714622] add /devices/virtual/bdi/btrfs-7 (bdi)ACTION=addDEVPATH=/devices/virtual/bdi/btrfs-7SUBSYSTEM=bdiSEQNUM=5229USEC_INITIALIZED=10688712982