この文書は、DecibelsのUDEV Primer Misc Devicesを著者David Babcock(Alias Decibels)の許可を得て、
五十嵐 正尚([email protected])が翻訳し、GentooJPで公開しているものです。
日本語翻訳版 最終更新日 2005-03-25
Chris Atkinson著
このセクションは、純粋udevシステムと同期するためにPalm Pilot USBクレードルをセットアップ方法を述べます。
ここではPalm Pilotと連携するように読者のシステムが適切に設定されていることを想定しています。
同期の完了、キャンセル、終了の前にHotSynchボタンが押されると、Palm Pilotはsysfsにだけ出現します。 これは、要件が満たされる前にHotSynchボタンを何度も押している状況を言っています。
まず、USBポートにクレードルを繋いで、クレードルのHotSynchボタンを押してください。そして、dmesg
を実行します。
その結果は以下のようになるはずです。
usb 2-1: new full speed USB device using address 2
ここで、この新しいフルスピードUSBデバイスを見つけるためには、sysfsを詳しく調べる必要があります。
/sys/class/tty
を見てみましょう。
HotSynchが有効である間に、以下のように/sys/class/tty
ディレクトリに移り、lsを実行してください。
bash-2.05b# cd /sys/class/tty bash-2.05b# ls console tty12 tty19 tty25 tty31 tty38 tty44 tty50 tty57 tty63 ttyS3 ptmx tty13 tty2 tty26 tty32 tty39 tty45 tty51 tty58 tty7 ttyS4 tty tty14 tty20 tty27 tty33 tty4 tty46 tty52 tty59 tty8 ttyS5 tty0 tty15 tty21 tty28 tty34 tty40 tty47 tty53 tty6 tty9 ttyS6 tty1 tty16 tty22 tty29 tty35 tty41 tty48 tty54 tty60 ttyS0 ttyS7 tty10 tty17 tty23 tty3 tty36 tty42 tty49 tty55 tty61 ttyS1 ttyUSB0 tty11 tty18 tty24 tty30 tty37 tty43 tty5 tty56 tty62 ttyS2 ttyUSB1
関連のあるエントリは、最後のttyUSB1
です。(USBリンクの両方がPalm Pilotによって作成されますが、後者でだけで全て行うので、ttyUSB0
は無視します。)
でも、再度チェックしましょう。HotSynchがタイムアウトになるまで待って、lsコマンドを再び実行してください。二つのttyUSB
エントリが、なくなっているはずです。
もうsysfsのどのエントリを扱えばよいかわかりましたね。
udevルールに必要なデータを見つけ出すために、udevinfo
を使いましょう。次のようにしてください。
bash-2.05b$ udevinfo -p /sys/class/tty/ttyUSB1 -a
そのエントリのなかに関連するものがあります。
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1' : BUS="usb" ID="2-1" SYSFS{bConfigurationValue}="1" SYSFS{bDeviceClass}="00" SYSFS{bDeviceProtocol}="00" SYSFS{bDeviceSubClass}="00" SYSFS{bMaxPower}=" 2mA" SYSFS{bNumConfigurations}="1" SYSFS{bNumInterfaces}=" 1" SYSFS{bcdDevice}="0100" SYSFS{bmAttributes}="c0" SYSFS{detach_state}="0" SYSFS{devnum}="4" SYSFS{idProduct}="0001" SYSFS{idVendor}="0830" SYSFS{manufacturer}="Palm, Inc." SYSFS{maxchild}="0" SYSFS{product}="Palm Handheld" SYSFS{serial}="123456789ABC" SYSFS{speed}="12" SYSFS{version}=" 1.00"
この情報を使って、/dev
にPalm Pilot用のエントリを作成するudevルールを/etc/udev/rules.d/10-udev.rules
ファイルに作成できます。
その方法には様々なものがあります。私が使っている方法を、以下に示します。
#Chris Palm Pilot BUS="usb", SYSFS{serial}="123456789ABC", NAME="pilot"
次に、新しいpilot
デバイスのためのパミッションを設定する必要があります。
/etc/udev/permissions.d/50-udev.permissions
ファイルのデフォルト設定だけは、そのまま残しておくのが作法なので、デバイスの世界での読み込み/書き込みをするために、以下のエントリを含む/etc/udev/permissions.d/10-udev.permissions
ファイルを作成する必要があります。
#set Palm Pilot rw pilot*:root:usb:0666
では、動作しているか確認してみましょう。 まず、HotSynchボタンを押してください。 ファイルを参照するために、Palmに対し次のように都合のよい害のないコマンドを実行してください。
bash-2.05b$ pilot-xfer -p /dev/pilot -L
Palm Pilotのファイルのちゃんとしたリストが得られるはずです。
Palmを繋いだときに使用するどんなGUIツールでも/dev/pilot
デバイス(前述した、TTYUSB
ではなく)を参照することができることを確認してください。これでもう準備が整います。
Chris Atkinson著
たびたび質問される代表的なデバイスタイプの一つに、USBドライブ/サムドライブ/キーチェインドライブがあります。これらは、USBポートに挿入でき、ハードドライブとしてマウントできる親指サイズのデバイスです。
ここでは、そのようなドライブを使う観点でだけudev
を説明します。
udev
以外の事項も同様に網羅していることを確認するために、これらのドライブに関するより多くの一般的なチュートリアルを再度参照することをお勧めします。
注意すべきudev
以外の事項の一つに、2.6.9カーネルの一部で開始するには、SCSIエミュレーションを使用するのではなく、USBブロックドライブをサポートするコンパイルオプションのことがあります。
これは極めて新しい情報ですので、古いsd*デバイスと新しいub*デバイスの両方を使って例を示します。
始めに、ドライブを挿入してdmesgを実行しましょう。 SCSIエミューレーションを使用している場合、その出力の最後の行は、以下のようになるはずです。
usb 1-2: new high speed USB device using address 2
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: 128MB Model: USB2.0FlashDrive Rev:
Type: Direct-Access ANSI SCSI revision: 02
USB Mass Storage device found at 2
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
SCSI device sda: 251904 512-byte hdwr sectors (129 MB)
sda: Write Protect is off
sda: Mode Sense: 03 00 00 00
sda: assuming drive cache: write through
sda: sda4
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
もしくは、2.6.9+のUSBブロックデバイスサポートを使用しているなら、以下のようになります。
usb 1-2: new high speed USB device using address 2
ub: sizeof ub_scsi_cmd 60 ub_dev 924
uba: device 2 capacity nsec 256000 bsize 512
uba: was not changed
uba: uba1
usbcore: registered new driver ub
では/sys
にあるこのデバイスの情報を探します。
デバイスsda(またはuba)ではなく、そのパーティションであるsda4(またはuba1)を探すのがコツです。よって、次のコマンドを実行します。
udevinfo -p /sys/block/sda/sda4 -a
もしくは、新しいub*デバイス用には以下を実行します。
udevinfo -p /sys/block/uba/uba1 -a
その出力のうち関係のある箇所は、以下のような感じで表示されるでしょう。
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-1':
BUS="usb"
ID="1-1"
SYSFS{bConfigurationValue}="1"
SYSFS{bDeviceClass}="00"
SYSFS{bDeviceProtocol}="00"
SYSFS{bDeviceSubClass}="00"
SYSFS{bMaxPower}=" 84mA"
SYSFS{bNumConfigurations}="1"
SYSFS{bNumInterfaces}=" 1"
SYSFS{bcdDevice}="0100"
SYSFS{bmAttributes}="80"
SYSFS{detach_state}="0"
SYSFS{devnum}="2"
SYSFS{idProduct}="0117"
SYSFS{idVendor}="0117"
SYSFS{manufacturer}="Power by USB"
SYSFS{maxchild}="0"
SYSFS{product}="USB 2.0 Flash Drive "
SYSFS{serial}="A083014282978"
SYSFS{speed}="480"
SYSFS{version}=" 2.00"
次に以下のように/etc/udev/rules.d/10-udev.rules
にルールを作成します。
#Black USB Thumb Drive
BUS="usb", SYSFS{serial}="A083014282978", NAME="blackthumb"
そうするとサムドライブが、割り当てたものと共に/dev
にデバイスが確実に出現することを、以下のようにして確認します。
ls
-la /dev | grep thumb
存在するなら、次にマウントできるように/etc/fstab
ファイルにエントリを追加します。
以下に単一パーティション構成のvfat
フォーマットドライブを、どのユーザでもマウントできるようにセットアップするためのエントリを示します。
状況に応じて適切に変更してください。
/dev/thumb /mnt/thumbdrive vfat noauto,user,umask=000 0 0
では、マウントして期待した場所であることを確認しましょう。
mount /dev/thumb
cd /mnt/thumbdrive
ls