この文書は、DecibelsのUDEV Primer Misc Devicesを著者David Babcock(Alias Decibels)の許可を得て、
五十嵐 正尚([email protected])が翻訳し、GentooJPで公開しているものです。

日本語翻訳版 最終更新日 2005-03-25

Linux新人およびベテランユーザのためのコンピュータに関する支援文書

UDEV手引書 miscデバイス


Palm Pilot、USBとudev

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ではなく)を参照することができることを確認してください。これでもう準備が整います。





USBサム/フラッシュデバイス

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





Decibels