試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Gentoo Linux上のuswsuspについての覚え書き(復帰デバイス名を直接指定する方法)

Debian/Ubuntuでの方法は「Ubuntu Gutsy(7.10)でuswsusp + hibernate-scriptによるハイバネーションを行う」で書いたようになっているが、Gentoo上での作業はこれと多少異なる。

インストール

「sys-power/suspend」をインストールする。
バージョン0.8では進行状況表示にGentooのfbsplashが利用できるが、これを使用する場合、カーネルを2.6.25にした後でklibc、v86d、splashutils、suspendの4つを再ビルドすることになった。
関連記事:

初期RAMディスクイメージ(initrd/initramfs)について

uswsuspで復帰させるにはinitrdが必要だが、genkernelを使用していない場合、
http://gentoo-wiki.com/HOWTO_Userspace_Software_Suspend_(uswsusp)
を参考に手動でinitrdを作成する。この場合、メモリイメージを保存するパーティションは「/dev/hda7」のような(ブロック)デバイス名を(/etc/suspend.confに)直接指定しなくてはならず、ラベルやUUIDによる指定はできない。
genkernelを使用する場合、initrd内のファイルを少し修正した上で/usr/lib/suspend/resume/etc/suspend.confを追加し、カーネルコマンド行の修正を行うことで、ラベルやUUIDを使用したパーティション指定ができるようになる(今回は扱わない)。
関連記事:

下はgenkernelを使用せず、ラベル/UUID指定をしない場合の作業例。busyboxは「USE=static」でビルドしたものが必要。

$ mkdir work/initrd.d -p
$ fakeroot bash
fakeroot# cd work/initrd.d/
fakeroot# zcat [splash_geninitramfsで作成したinitrd] | cpio -idm --quiet -H newc
fakeroot# mkdir bin
fakeroot# mknod dev/snapshot c 10 231
fakeroot# install -m 755 /bin/busybox /usr/lib/suspend/resume bin/
fakeroot# install -m 755 [上のURLから保存したinitの保存場所] .
fakeroot# install -m 644 /etc/suspend.conf etc/
fakeroot# find | cpio --quiet -L -o -H newc | gzip -9 > ../out.cpio.gz
$ sudo cp work/out.cpio.gz /boot/[新しいinitrdファイルの名前]
$ rm work/ -fr

splash_geninitramfsについては「Gentoo Linuxにおけるグラフィカルな起動画面とuvesafbについて(Linux 2.6.23以降)」を参照。
注意しなくてはならないのは、Debian/Ubuntu同様、

  • 休止時にはシステム上の/etc/suspend.conf
  • 復帰時にはinitrdの/etc/suspend.conf

が使用されることにより、設定ファイルに変更を加えたときには必ずinitrdを再作成しなくてはならないということ。手動になるため、忘れないようにする。

ブートローダGRUBの設定

initrd行(初期RAMディスクの場所を指定)では上で作成したinitrdファイルの場所を指定する。
kernel行(カーネルのコマンド行を記述)にはuvesafbとfbsplashの指定がしてあれば特別な指定は不要。

休止の実行

TuxOnIceと同様、hibernate-scriptから実行でき、休止/復帰前後の(OS上の)色々な処理はこれに任せることができる。設定しなくてはならないのは
ファイル名: /etc/hibernate/hibernate.conf

TryMethod ususpend-disk.conf
#TryMethod suspend2.conf
TryMethod disk.conf
TryMethod ram.conf

hibernate-scriptの設定ファイルにある「TryMethod suspend2.conf」の行の先頭に「#」を付けてコメントにし、代わりに「TryMethod ususpend-disk.conf」を追加する部分。
関連記事:

テスト時には再起動をするのが便利

uswsuspの設定ファイル上で
ファイル名: /etc/suspend.conf

shutdown method = reboot

の設定をしてinitrdを再作成すると、電源が切れる代わりに再起動される。テストするときに使えるが、外し忘れには注意。