Ubuntu Weekly Recipe

第559回 デバイスの認識をモニタリング・コントロールできる「udevadm」

この記事を読むのに必要な時間:およそ 8 分

デバイスのイベント情報を表示する「info」

認識済みのデバイスの情報(プロパティ)を表示したい場合は,infoサブコマンドを使います。表示したいデバイスのデバイスファイル名を-nオプションに指定して実行します。

$ udevadm info -n /dev/bus/usb/003/005
P: /devices/pci0000:00/0000:00:14.0/usb3/3-1
N: bus/usb/003/005
E: BUSNUM=003
E: DEVNAME=/dev/bus/usb/003/005
E: DEVNUM=005
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-1
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_MODEL=CSR8510_A10
E: ID_MODEL_ENC=CSR8510\x20A10
E: ID_MODEL_FROM_DATABASE=Bluetooth Dongle (HCI mode)
E: ID_MODEL_ID=0001
E: ID_REVISION=8891
E: ID_SERIAL=0a12_CSR8510_A10
E: ID_USB_INTERFACES=:e00101:
E: ID_VENDOR=0a12
E: ID_VENDOR_ENC=0a12
E: ID_VENDOR_FROM_DATABASE=Cambridge Silicon Radio, Ltd
E: ID_VENDOR_ID=0a12
E: MAJOR=189
E: MINOR=260
E: PRODUCT=a12/1/8891
E: SUBSYSTEM=usb
E: TYPE=224/1/1
E: USEC_INITIALIZED=481849865

USBデバイスは/dev/bus/usb/バス番号/デバイス番号のファイルが作られるのでこれを指定していますが,ストレージデバイスなら/dev/sda1なども指定可能です。

さてinfoサブコマンドで表示されるデータには次のようなヘッダーが付けられています。

  • P:デバイスパス
  • N:デバイス名
  • L:リンクプライオリティ※2
  • S:シンボリックリンク
  • E:プロパティ
※2
複数のデバイスが同じシンボリックリンクを生成しようとした時の優先順位です。ルール側で何も指定しない場合は,0が設定されます。

デバイスファイルが作られない場合,sysfs上のデバイスパスを-pオプションに指定します。

$ udevadm info -p /devices/pci0000:00/0000:00:14.0/usb3/3-1

得られる結果はデバイス名を指定したときと,原則同じです。

特定の情報だけを取得したい場合は-qオプションでフィルタリングできます。たとえばデバイスパスを取得したければ次のように「path」を指定してください。

$ udevadm info -n /dev/bus/usb/003/005 -q path
/devices/pci0000:00/0000:00:14.0/usb3/3-1

他にもデバイス名(name)⁠シンボリックリンク(symlink)⁠プロパティ(property)⁠すべて(all)を指定できます。

-aオプションを付けると,親デバイスまでさかのぼって状態を表示してくれます。

$ udevadm info -n /dev/bus/usb/003/005 -a
(中略)
  looking at device '/devices/pci0000:00/0000:00:14.0/usb3/3-1':
    KERNEL=="3-1"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
(中略)
    ATTR{urbnum}=="130"
    ATTR{version}==" 2.00"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3':
    KERNELS=="usb3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
(中略)
    ATTRS{urbnum}=="79"
    ATTRS{version}==" 2.00"

  looking at parent device '/devices/pci0000:00/0000:00:14.0':
    KERNELS=="0000:00:14.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="xhci_hcd"
    ATTRS{subsystem_device}=="0x8338"
    ATTRS{subsystem_vendor}=="0x10f7"
    ATTRS{vendor}=="0x8086"

(中略)
  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。