8月3日にcurrent-usersメーリングリストで、電源管理の開発ブランチのテストが呼びかけられている。これはACPIによるsuspend/resumeの改良を目指したものである。取り敢えず、呼びかけの最初のメールはこれ:
http://mail-index.netbsd.org/current-users/2007/08/03/0005.html
現在のNetBSD currentやNetBSD 4.0_BETA2は、ACPIでのsuspend/resumeの機能は付いている。ただ、一応付いてるだけで、ドライバなどはちゃんと対応していない。
僕が使っているCF-R5Kの場合でも、こんな問題がある。
- ときどきsuspendやresumeに失敗する。:-)
- resumeした後はPCカード・スロットが使えなくなる。
- resumeした後はUSBが使えなくなる。
- resumeした後は無線LANが動かなくなる。
- resumeした後はACアダプタの抜き挿しを認識しなくなる。
- X Windowの画面は回復できない。
無線LANは結構致命的な面があって、一旦suspendしてresumeすると次に電源を切らずに再起動すると、なぜか認識すらしなく(なかったことに)なってしまう。これは電源を完全に切って再起動するまで復活できない。
最後のX Windowの問題は回避する方法がある。Xサーバは仮想コンソールの1つを占有して動いている感じになっている。そこで、こんなスクリプトを使う。
- 現在の仮想コンソールを覚える。
- 一旦テキストモードの仮想コンソールに切り替える。
- suspendする。
- resumeしたら、覚えていた仮想コンソールに切り替える。
実際のコードの破片はこんな感じ:
xwin=`wsconscfg -g`
wsconscfg -s 1; sleep 1
sysctl -w machdep.sleep_state=3
curwin=`wsconscfg -g`
if [ "${curwin}" != "${xwin}" ]; then
wsconscfg -s "${xwin}"
fi
sleepを入れてるのは気分の問題もあるけれど、最初からテキストのコンソールだったときにキーが押しただけのような変な状態となることを避けるため。
以上は、現在のダメダメな状況。今回呼びかけられているテストは、ちゃんとドライバ・レベルの対応を加えたもの。ただし、X Windowに関しては、まだ。
テストを行うには、既にNetBSD current (4.99.26以降)がインストールされていることが必要。
- 以下のカーネルを持ってくる。
ftp://ftp.netbsd.org/pub/NetBSD/misc/jmcneill/pm/netbsd - シングルユーザで起動する。
- sysctl(8)でsuspendしてみる。こんな感じ:
# sleep 1; sysctl -w machdep.sleep_state=3
- ちゃんとsuspendしたことを確かめたら、しばらくして電源ボタンでresumeを試す。
- ちゃんとresumeできたら、PCカード, USB, 無線LANといったデバイスが使用できるかも確認する。
現状では、無線LANのwpi(4)あたりはresume後に動作しない問題があってCF-R5Kも同様である。しかし、他の上に挙げた問題は、ほぼ解消している(実際に日常に使っているわけではないので、完全にテストできたわけではに)。
また、続けてVGAの画面の復元についても、テストが呼びかけられている。
http://mail-index.netbsd.org/current-users/2007/08/07/0013.html
pkgsrcに入った sysutils/vbetool を使って欲しいとのことであるが、こちらはうまくいっていないケースもあるようだ。