雑記 - safe sleep Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

PowerBook G4 12inch 867MHz での safe sleep (hibernation)について

Tiger 10.4.3 のリリース後から調べていました。結論から言うと、古い私の PowerBook G4 でも、うまくできています (^-^)/(2006/Jan)

!hibernation?
New PowerBook G4 には Safe sleep と呼ばれる、PCで言うところの hibernation 機能が実装されたという話があります。(hibernation とは、メモリー上の情報をハードディスクに保存して完全にシステムを停止させるという機能です。)

そもそもこの safe sleep 機能が、new powerbook のみの機能なのかというのが私の疑問の発端でした。
そこで、省電力関係の設定を行う pmset コマンドを調べてみました。

私の 12inch は現在 10.4.3 なのですが、この pmset のタイムスタンプは、つい最近の 9月23日。これは怪しい。New PowerBook のリリースの少し前です。

そこで、このコマンドの中の文字列を見てみようと strings /usr/bin/pmset を実行してみました。するとその中に、、、、
Hibernate Mode
Hibernate File
といった文字列があるではないですか!!

なお、Panther の pmset にはこのような文字列は含まれていません。

(ちなみに、pmset の man は古いままで、何の情報も得られません。)

まだこれ以上の情報は取得できておらず、ただの推測に過ぎませんが、new PowerBook じゃなくても、この safe sleep (hibernation)の恩恵にあずかれるのではないかと予測しています。

!さらに
/mach_kernel の中にも、Hibernate 関連の文字列が入っています。

これはきっと古い machine とかでも、Tiger 10.4.3 を載せてれば safe sleep できる可能性が大です。

Darwin の source code を調べたら何か分かるかも。

!と思ったら
google で関連しそうなキーワードを調べまくったら、safe sleep について書いてあるページを見つけました。

[[http://matt.ucc.asn.au/apple/machibernate.html]]

これ、ビンゴです!

!sleepimage
new powerbook 15inch を見せてもらったところ、案の定 /var/vm/ 以下に sleepimage という実メモリ程度のファイルが存在した。
ls -l /var/vm/sleepimage
-rw------T   1 root  wheel  1073741824 Nov 6 10:16  /var/vm/sleepimage
おそらくこのファイルが hibernation 時に memory 情報を格納するファイルだろう。
このファイルの中身はどういうタイミングで作成されるのだろう。

!うーん、、、
上に書いているページの情報に従って試してみたが、いまのところうまくいかない。PBG4 12inch 867MHz で試したところ試してみたがいまのところうまくいかない。通常のスリープをさせるとブラックアウトしてしまう。 T^T

うまくいかない。。。pending

!できました!!!!!(2006/01/11, Macworld SF 2006 基調講演の翌日)
ふと思い出して再度試してみたら safe sleep できましたができました

{{attach_view('safe_sleep.jpg')}}

ポイントは、safe sleep に入るときの電力モードにありそうです。
偶然、電源アダプタに接続したままでテストしたのが、問題解決の手がかりを与えてくれました。

省電力モードにしている状態で、スリープさせると上述のようにブラックアウトしますが、パフォーマンスモードにした後にスリープさせると、うまくスリープしてくれました。まさかこういうところで引っかかっていたとは。

なお、SuspendNow! 0.8( http://www.versiontracker.com/dyn/moreinfo/macosx/28440 )というユーティリティを使えば、随時 safe sleep することができます。復帰後に時間も狂わないしネットワークデバイスなんかも問題なく使えます。お勧めです。(うまく動くかどうかリスクは伴いますけどね。あくまで自己責任でお願いします。)

上述のように、私の PowerBook G4 12inch 768MHz では省電力モードになっていると safe sleep に失敗するため、safe sleep する前にパフォーマンスモードに切り替えるように細工をしました。どういう細工かというと、、、

pmset を使えばコマンドラインから電力モードを切り替える事ができます。この pmset を使って suspend する直前に電力モードを変えてやればいいわけです。
で、SuspendNow! をちょっと調べてみたところ、
/Applications/SuspendNow.app.localized/Contents/engine/SuspendNow/suspendnow.sh
というスクリプトが存在して、このスクリプトの中に pmset 命令を適当に書いてやれば、自動的にモード切り替えもできそうだと替えもできることが判明しました

めでたしめでたし