Linuxにおけるudev、hald、lsusbなど

8月 25, 2009

Linuxにおけるudevに関するメモ。USB接続とホットプラグについても、少し。

[udevって何?]
udevは動的にデバイスを管理する仕組みで、カーネル2.6からサポートされるようになった。
udevにおいては各種デバイスの取り扱い方を、/etc/udev/rules.d/配下のルールファイル
に記述している。
確認してみると、/etc/udev/rules.d/配下には、50-udev-default.rules,40-redhat.rules,
60-pcmcia.rules,80-drivers.rules,64-device-mapper.rules….など多数のファイルが
存在している。
先頭の数値が若い順から適用されるようになっているそうだ。

[ホットプラグ対応について]
ホットプラグデバイス接続時において、以前は/sbin/hotplugを実行して認識していたが、
最近は一般的にudevが使用される。
udevを使用した、システム上でのデバイス認識の流れについて、以下にメモ。

1.デバイス接続

2.カーネルがデーモンのudevdに通知

3.udevdが/etc/udevd/配下のスクリプトファイルを実行する。
※先に言及したルールファイルに従って動的にデバイスファイルが生成される。

4.デバイスに関する情報がhaldに通知され、新規のデバイスの登録が行われる
※haldはシステム上でデバイスのDBを管理しているHALのデーモン。

5.D-BUSにより名アプリケーションに情報が通知され、デバイスが使用できる
ようになる。
※D-BUS(Desktop Bus)はデスクトップアプリ間での通信プロトコルらしいので、
サーバとしてのLinuxには関係ないかも…


この辺りの動きはかなり流動的なようである。以前存在した、haldが呼び出す「fstab-sync」
(/etc/fstabと同期をとるプログラム)はもうなくなったようだし…?
今後も何かと変化がありそう。

[lsusbについて]
lsusbコマンドでUSBデバイスの情報を確認する。


# lsusb
Bus 001 Device 002: ID 1267:0201 MelCo. , Inc.
Bus 001 Device 001: ID 0000:0000 <- - ホストコントローラー


lsusbは/proc/bus/usb/devicesから情報を読み込んでいる。
# cat /proc/bus/usb/devices を実行するとなんとなく分かると思う。

lsusb -vは例によって詳細表示。
lsusb -tは、USB階層をツリー形式で表示する。これにより、デバイスマップが理解
しやすくなる、かも?(告白すると、自分は見てもよく分かりません)

参照URL
http://www.gentoo.org/doc/ja/usb-guide.xml

関連記事
LinuxでCPUの搭載数を調べる
dmidecodeでハードウェアの情報を取得する
lspciでPCIバスデバイスの情報を確認する
scsi_infoでSCSIデバイスの情報を確認する

Posted by Le Blue | Categories: Linux |

No Responses so far | Have Your Say!

Comments are closed.