改訂版: LinuxノートPC上でサスペンド/ハイバネーションする方法

昨年6月、私は「LinuxノートPCのサスペンドとハイバネーション」(翻訳記事)という記事を書いた。以来、状況がいくつか(嬉しいことに良い方向で)変わったため、再びこのテーマを取り上げることにした。また、前回の記事の中で書いたサスペンド用のシェルスクリプトについての改善案を何人かの読者からいただいたので、今回の新版でそれらの提案を取り入れた。ただ残念ながらコメントのほとんどが匿名で投稿されたものだったので、書いてくれた人たちのクレジットをきちんと示すことはできなかった。

前回の記事以来に起こった最大の状況の変化は、マルチコアCPU搭載のラップトップが今やデファクトスタンダードになっているということだ。Intel Core DuoプロセッサとCore2 Duoプロセッサはモバイルユーザ向けにSMP(対称型マルチプロセッシング)機能を提供しているだけでなく、それ以前のプロセッサと比べて消費電力も少なく、したがって発熱量も少ない。

これらの新しいマルチコアCPUはLinuxカーネルでもサポートされてはいるものの、SMPモードでそれらのCPUをフル活用するためにはかなり新しいバージョンのカーネルが必要だ。SMPをオンにした状態でのサスペンド(STR)はバージョン2.6.18以降のカーネルで可能だが、100%安定しているというわけではなく、レジューム時に時折クラッシュすることがある。またCore Duoシステムに関して私が遭遇したもう一つの問題として、バッテリー残量の計算違いがある。例えばバッテリーの残量レベルが70%の状態が一分間続き、その直後から40%の状態が一分間続き、またその直後には70%に戻るというようなことが起こると言った具合いだ。とは言えバージョン2.6.20のカーネル(現在リリース候補)では状況が大きく改善されているので、マルチコア搭載のラップトップをお持ちならカーネルをアップグレードすべきだろう。

前回の記事ではシステムのハイバネーションに使うことのできる3つのソリューションを紹介した。すなわちswsusp(カーネルに統合されている)、uswsusp(ユーザ空間モードで動くswsuspを実装したもの)、suspend2の3つだ。この中の内、私はuswsuspを使うことにした。理由はuswsuspが現時点では安定性と信頼性がともに最も高い方法であるためだ。suspend2は非常に優れたソフトウェアではあるものの今現在はまだメインラインのLinuxカーネルには統合されていないので、手動でのパッチ適用とカーネルのコンパイルとが必要となる。

嬉しいことにuswsuspは今では安定していてバージョン2.6.17以降のカーネルではうまく統合されており、また主要なLinuxディストリビューションのほとんどでサポートされている。例えばDebian(EtchとSid)やUbuntu(Edgy EftとFeisty Fawn)のユーザは、(ディストリビューションが提供するカーネルをそのまま実行している場合)uswuspパッケージをインストールし、パッケージマネージャに尋ねられたらスワップのパーティションを入力するだけで良い。そうしておくと、ラップトップをハイバネーションしたくなったらs2diskを実行すればハイバネーションすることができるようになる。