Linuxにおけるudev、hald、lsusbなど
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デバイスの情報を確認する