ThinkPad L412 に Gentoo を入れる (その4) サスペンドとハイバーネート
サーバとして使うので絶対にサスペンドとかハイバーネートとか使わないと思うんだけど、せっかくのニューマシンだから設定を経験しておこうというわけでテスト。 fglrx みたいなサスペンドできないドライバは入っていないし!
サスペンド/ハイバーネート用ツールをインストール
hibernate-script をインストールする。
$ sudo emerge -v sys-power/hibernate-script
/etc/hibernate/ 以下にいろいろな設定ファイルが入る。
実行ファイルは /usr/sbin/hibernate-ram (サスペンド-S3-用) と /usr/sbin/hibernate (ハイバーネート-S4-用) の 2 つ。
ハイバーネート用のカーネル −Tux On Ice−
デフォルトのカーネルでもハイバーネートできそうだが、専用にカスタマイズされたカーネルパッチがあるので当てる。これを当てることにより、通常は SWAP にしか書き出せない RAM 領域出力先を単体ファイルにしてみたり、その他いろいろ設定出来るようになる。
パッチは TuxOnIce に行って対応したカーネルのバージョンのパッチをダウンロードする。今回自分は gentoo-sources-2.6.34-r1 を使うことにしたので、 2.6.34 用のパッチをダウンロードした。
ダウンロードしたらパッチを当てる。
$ sudo su - # cd /usr/src/linux # wget http://www.tuxonice.net/downloads/all/tuxonice-3.1.1.1-for-2.6.34.patch.bz2 # bzcat tuxonice-3.1.1.1-for-2.6.34.patch.bz2 | patch -p1
もしくは sys-kernel/tuxonice-sources というパッチ済のカーネルソースも portage に存在するので、もちろんそちらを使っても良い。ただしバージョンは若干古い。
そこまでやったらカーネルの設定を行い、カーネルをコンパイルする。これより先は次の参考サイトとにらめっこしながらすすめる。
TuxOnIce 用のツールのインストール
sys-apps/tuxonice-userui を入れる。
$ sudo emerge -v sys-apps/tuxonice-userui
ツールは /sbin/tuxoniceui_text と /sbin/tuxoniceui_fbsplash の 2 が入る。前者はテキストコンソール用、後者はスプラッシュスクリーン用のものだ。
カーネル設定の注意
Default userui program location [CONFIG_TOI_USERUI_DEFAULT_PATH] の設定はデフォルトでは /usr/local/sbin/tuxoniceui_text が入っているが、ここは変更する必要がある。ツールは /usr/local/sbin 以下ではなく、前述のように /sbin 配下に入っている。また、スプラッシュスクリーンを使っている場合は /sbin/tuxoniceui_fbsplash を使ってやらないと固まる。
また、 L412 はデフォルトだと AHCI モードでディスクをアクセスするが、これがカーネル組み込みじゃないとハイバーネートからの復帰時に RAM イメージファイルを見つけてくれない。 CONFIG_SATA_AHCI=m ではダメで CONFIG_SATA_AHCI=y である必要がある。要注意。
もう一つ。実はここでかなり長いことハマったのだが、 File Allocator [CONFIG_TOI_FILE] を使ってハイバーネートする場合、ファイルが EXT4 領域にあると EXT4 ドライバが組み込みだろうがモジュールだろうがうまく読んでくれないようだ。まだ設定が悪いのかもしれないが、ググッてみたところ同様のケースが散見されたので、バグかも知れない。 EXT4 領域しか作っていない場合、諦めて SWAP パーティションを使うようにしたほうが幸せである。スワップパーティションを切っていなかった場合は GParted でググれ。
最終設定
ファイルアロケータを諦め、スワップ領域を使うことにして GRUB のブートオプションに書く。
$ sudo nano -w /boot/grub/grub.conf .... resume=swap:/dev/sda4 今回は sda4 がスワップパーティション $ sudo rc-update add hibernate-cleanup boot $ sudo reboot
リブートしてオプションを有効にした状態で立ち上げてやらないと言うことを聞いてくれないので注意である。
xfce4 with ConsoleKit の場合
実はそのままではサスペンドもハイバーネートも再起動も停止も、要するに電源関係のコントロールは root 以外一切出来ない。
ja:faq [Xfce Wiki] を参考にすると良い。