2009/10/27

udevのルールを書くにあたって

udevルールの書き方
udev の仕組みを理解する - いますぐ実践! Linuxシステム管理 / Vol.114
udev の設定をカスタマイズする - いますぐ実践! Linuxシステム管理 / Vol.115
udev をもっとカスタマイズする - いますぐ実践! Linuxシステム管理 / Vol.116

udevmonitor というコマンドを端末で実行しておいてデバイスを接続すると色々表示される
また、--env オプションをつけて実行するとより詳細な情報が得られる

試しにiPod touchを接続してみると、、
# udevmonitor
the program '/bin/bash' called 'udevmonitor', it should use 'udevadm monitor ', this will stop working in a future release


KERNEL[1256613988.410003] add /devices/pci0000:00/0000:00:12.2/usb1/1-5 (usb)
KERNEL[1256613988.412490] add /devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5:1.0 (usb)
KERNEL[1256613988.412551] add /devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5:1.0/usb_endpoint/usbdev1.13_ep02 (usb_endpoint)
KERNEL[1256613988.412589] add /devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5:1.0/usb_endpoint/usbdev1.13_ep81 (usb_endpoint)
KERNEL[1256613988.412619] add /devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5:1.0/usb_endpoint/usbdev1.13_ep83 (usb_endpoint)
…後略


かなりたくさん表示されるが多分見るべきは一番始めの行
デバイスが以下に接続されていることがわかる
/devices/pci0000:00/0000:00:12.2/usb1/1-5 (usb)

ここで udevinfo を実行するとそのデバイスにマッチする情報が表示される
$ udevinfo -a -p /devices/pci0000:00/0000:00:12.2/usb1/1-5
the program '/bin/bash' called 'udevinfo', it should use 'udevadm info ', this will stop working in a future release


looking at device '/devices/pci0000:00/0000:00:12.2/usb1/1-5':
KERNEL=="1-5"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{configuration}=="PTP + Apple Mobile Device"
ATTR{bNumInterfaces}==" 2"
ATTR{bConfigurationValue}=="3"
ATTR{bmAttributes}=="c0"
ATTR{bMaxPower}=="500mA"
ATTR{urbnum}=="17"
ATTR{idVendor}=="05ac"
ATTR{idProduct}=="1291"
ATTR{bcdDevice}=="0001"
ATTR{bDeviceClass}=="00"
ATTR{bDeviceSubClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{bNumConfigurations}=="3"
ATTR{bMaxPacketSize0}=="64"
ATTR{speed}=="480"
ATTR{busnum}=="1"
ATTR{devnum}=="13"
ATTR{version}==" 2.00"
ATTR{maxchild}=="0"
ATTR{quirks}=="0x0"
ATTR{authorized}=="1"
ATTR{manufacturer}=="Apple Inc."
ATTR{product}=="iPod"
ATTR{serial}=="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

looking at parent device '/devices/pci0000:00/0000:00:12.2/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="312"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="6"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.30.8-64.fc11.x86_64 ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:12.2"
ATTRS{authorized_default}=="1"

looking at parent device '/devices/pci0000:00/0000:00:12.2':
KERNELS=="0000:00:12.2"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x1002"
ATTRS{device}=="0x4396"
ATTRS{subsystem_vendor}=="0x1565"
ATTRS{subsystem_device}=="0x3700"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="17"
ATTRS{local_cpus}=="00000000,00000007"
ATTRS{local_cpulist}=="0-2"
ATTRS{modalias}=="pci:v00001002d00004396sv00001565sd00003700bc0Csc03i20"
ATTRS{numa_node}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""


ここで表示される情報は looking at ~ ごとのセクションに別れていて
1つのルールに他のセクションの情報を組み合わせて指定することはできない
1つのルールには1つのセクションの情報のみ使用すること

0 件のコメント:

コメントを投稿