udev hal dbus hotplug@X31 Linux(kernel-2.6.17-ck1+suspend2 patch)
gnome-power-manager(以下gpm)やらをうまく動作させるため、dbus/hal関係を整備しているうちに勢いでudevも導入してしまった。
udev/hal/dbus/hotplugが連携しないと正常動作しないのだが、どれもが全部仕組を理解しようと思うともれなくややこしい。
ややこしい上にディストリビューションのスタイルで設定、方式が変わってくるので野良ビルドなマシンでの構築はこれまたややこしい。
というわけであまり深く考えずにことを進める。
とりあえず、udev/dbus/hal/avahiの現時点最新版をソースからコンパイル、普通にインストール。
udevの起動に関しては/etc/rc.d/rc.SをPlamo-4.2(元々Plamo-4.0bなので)のモノを参考に書き換えて、
http://www.mythic-beasts.com/~mark/random/hal/
http://mux03.panda64.net/docs/udevrules_ja.html
辺りのディストリ固有の設定をのぞいた部分を参考にさせてもらいsyslog、udevmonitorなどで挙動を監視しながら設定。
あと、(install path)/etc/dbus-1/etc/system.dのhal.conf内の最後のポリシー設定のところを自分のユーザ名に変更。
これでユーザ権限で動いているgpmからの通知が通る。
ハズ。
その他デーモンは(acpid)/dbus/avahi/hal/hotplugの順で起動。
/opt/garnome/bin/dbus-daemon --system
/opt/garnome/sbin/avahi-daemon -D
/opt/garnome/sbin/avahi-dnsconfd -D
/opt/garnome/sbin/hald
sleep 1
. /etc/rc.d/hotplug start
これでudevに絡むところはだいたい動いてくれている。
ultrabaseは引き続きibm-acpiの機能(echo "undock" > /proc/acpi/ibm/dock
)で脱着、drive bayは筐体のレバー操作をするとhal経由で脱着、udevの機能で/dev/hdcが出たり消えたりしてくれる。
脱着後もUDMAはちゃんと機能する。
すばらしい。
ただしibm-acpiの機能(echo "eject" > /proc/acpi/ibm/bay
)で脱着させると即刺さるので今のところスクリプトで自動に脱着できない。
halに通知して脱着すればいいのだと思うが、今のところ通知方法がわからず。
drive bayを放置したままultrabaseを脱着させると刺さってしまうので、ACPIのイベントスクリプトの中で以下のように自動でdrive bayを脱着させる。
dock
/bin/echo dock > /proc/acpi/ibm/dock
. /etc/rc.d/hotplug stop
. /etc/rc.d/hotplug start
echo -n "MSTR dock" > /proc/acpi/lths
undock
umount -f /dev/hdc1
umount -f /dev/hdc
echo -n "MSTR eject" > /proc/acpi/lths
sleep 1
/bin/echo undock > /proc/acpi/ibm/dock
gpmはdbusと連動するように、
$ dbus-lanch gnome-power-manager
と起動するとうまく動く模様。
ただしメニュー操作からのhibernate(suspend2)がhalの通知がうまくいかないのか起動してくれない。
suspendはしてくれる。
- C'sGallery Blogっぽく見えるシステム3.2 -
小武
(管理人) eta2@tim.hi-ho.ne.jp