2007年08月10日

ACPI suspend/resume

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つを占有して動いている感じになっている。そこで、こんなスクリプトを使う。

  1. 現在の仮想コンソールを覚える。
  2. 一旦テキストモードの仮想コンソールに切り替える。
  3. suspendする。
  4. 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 を使って欲しいとのことであるが、こちらはうまくいっていないケースもあるようだ。



  • posted by Takahiro Kambe at 23:14| 京都 ☀| Comment(0) | TrackBack(0) | NetBSD | このブログの読者になる | 更新情報をチェックする
    この記事へのコメント
    コメントを書く
    お名前: [必須入力]

    メールアドレス:

    ホームページアドレス:

    コメント: [必須入力]

    認証コード: [必須入力]


    ※画像の中の文字を半角で入力してください。
    ※ブログオーナーが承認したコメントのみ表示されます。

    この記事へのトラックバック

    広告


    この広告は60日以上更新がないブログに表示がされております。

    以下のいずれかの方法で非表示にすることが可能です。

    ・記事の投稿、編集をおこなう
    ・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


    ×

    この広告は180日以上新しい記事の投稿がないブログに表示されております。