ThinkPad L412 に Gentoo を入れる (その4) サスペンドとハイバーネート

サーバとして使うので絶対にサスペンドとかハイバーネートとか使わないと思うんだけど、せっかくのニューマシンだから設定を経験しておこうというわけでテスト。 fglrx みたいなサスペンドできないドライバは入っていないし!

事前作業 カーネルコンフィグ

ACPI 周りを設定しておく。後ほど tuxonice の設定もするが今はこれだけで。

こちら を参考にするとイイ感じ。

サスペンド/ハイバーネート用ツールをインストール

hibernate-script をインストールする。

$ sudo emerge -v sys-power/hibernate-script


/etc/hibernate/ 以下にいろいろな設定ファイルが入る。
実行ファイルは /usr/sbin/hibernate-ram (サスペンド-S3-用) と /usr/sbin/hibernate (ハイバーネート-S4-用) の 2 つ。

サスペンドしてみる

コンソールから手打ちでサスペンドしてみる。

$ sudo hibernate-ram


カーネル設定さえちゃんとしてあれば、 L412 はこんだけで上手くサスペンドする。復帰は Fn でも押せばいい。

ハイバーネート用のカーネル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 に存在するので、もちろんそちらを使っても良い。ただしバージョンは若干古い。


そこまでやったらカーネルの設定を行い、カーネルコンパイルする。これより先は次の参考サイトとにらめっこしながらすすめる。

参考
http://en.gentoo-wiki.com/wiki/TuxOnIce#Alternative:_Using_a_Swapfile

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

リブートしてオプションを有効にした状態で立ち上げてやらないと言うことを聞いてくれないので注意である。

実際にハイバーネートする

コマンドを打つだけである

$ sudo hibernate


復帰は電源ボタン。

xfce4 with ConsoleKit の場合

実はそのままではサスペンドもハイバーネートも再起動も停止も、要するに電源関係のコントロールは root 以外一切出来ない。

ja:faq [Xfce Wiki] を参考にすると良い。

最後に

ちょっと苦労したけど、見た目は完璧に動作している。 ThinkPad L412 と Linux との相性は良いようだ!