hibernate-scriptの設定ファイルと、GRUB設定の入れ替え機能について
hibernate-scriptの設定ファイル
hibernate-scriptが実行時に直接使用するのは/etc/hibernate/hibernate.conf。
デフォルトでは、その内容が
TryMethod suspend2.conf TryMethod disk.conf TryMethod ram.conf
となっていて、ここに書かれている、方式ごとのファイルを参照する形になっているため、TuxOnIce以外の方式の例として、uswsusp方式でディスクに書き込むようにしたいのであれば、
TryMethod ususpend-disk.conf
の記述を一番上に書くか、あるいは、hibernateの-F(--config-file)オプションを使用して直接
$ sudo /usr/sbin/hibernate -F /etc/hibernate/ususpend-disk.conf
のようにする。
/etc/hibernate/common.confは、方式固有でない共通設定ファイル。/etc/hibernate/suspend2.confではTuxOnIce固有の設定が書かれている。ファイル名(suspend2.conf)は、Suspend2からTuxOnIceへの名称変更により、今後変更される可能性もある。
具体的な設定項目名とその説明は、
$ man hibernate.conf
で見られる(英語)が、設定項目数はかなり多い。
動作の流れと休止/復帰プロセスにおけるカスタムコマンドの実行方法について
ログファイル/var/log/hibernate.logを見ても分かるが、
- 休止時には、必要に応じてデーモンを停止させたり、デバイスドライバのカーネルモジュールを削除したり、マウント解除を行ったりなど、休止状態に入るための準備が、段階を経て進められる
- その段階は01(システム動作中の状態)から99(休止の実行)まであり、休止をするときには01から99へ、復帰時には逆に99から01へ向かう
どの段階で何が行われるのかは、hibernate-scriptにより決められていて、基本的には、適切な順番で進んでいくのだが、自分で、この中の任意の段階番号を指定して、自由にコマンドを実行することもできる。
ファイル名: /etc/hibernate/common.conf
# 休止段階で任意のコマンドを実行 OnSuspend [番号] [コマンド行] # 復帰段階で任意のコマンドを実行 OnResume [番号] [コマンド行]
GRUBの設定ファイル入れ替え機能について
休止状態からの復帰をするためには、休止を行ったときと同じカーネルとそのコマンドラインで起動し、更に、デフォルトのスワップパーティションを使用する場合を除いて、そのコマンドラインには、メモリイメージの正確な場所が「resume=」オプションとして指定されている必要がある。*1
新しいカーネルと別の(安定したバージョンなどの)カーネルといった具合に/boot/grub/menu.lstに複数のカーネルが書かれている場合、復帰時のメニューで、誤って休止したときと別なカーネルを選んでしまうと、正常に復帰は行われない。また、別のOSが起動できるように構成してある場合も、そちらを起動させてしまうことのないようにしたほうがよい場合がある。*2
hibernate-scriptには、GRUBのメニューリストファイルを休止の途中で別のリストファイルに入れ替え、次回起動後に元のファイルに戻すという機能がある。これをうまく使うことで、次回起動時、(一時的に)休止したときのカーネル以外から起動できないようにすることができる。
ファイル名: /etc/hibernate/common.conf
ChangeGrubMenu yes GrubMenuFile /boot/grub/menu.lst AlternateGrubMenuFile /boot/grub/menu-suspended.lst BackupGrubMenuFile /boot/grub/menu.lst.hibernate.bak
上の例では、通常のメニューファイル/boot/grub/menu.lstと、入れ替えるメニューファイル/boot/grub/menu-suspended.lstを用意して、自動的に入れ替えを行ってくれる。/boot/grub/menu-suspended.lstの内容は、/boot/grub/menu.lstを元にして、「TuxOnIceのカーネル」以外の項目(title行からboot行までのひとまとまり)を削除した内容とする。更に、
ファイル名: /boot/grub/menu.lst
splashimage (hd0,4)/grub/splash.xpm.gz
ファイル名: /boot/grub/menu-suspended.lst
splashimage (hd0,4)/grub/splash-tuxonice.xpm.gz
通常起動時と休止後の起動時とで別々の背景画像を用意し、復帰時に表示されるメニューの背景を変えるのも、好みによって行っておくとよいかもしれない。上の設定は例なので、画像のあるパーティションやファイル名は環境に合わせる。
「BackupGrubMenuFile」というのは、オリジナルのメニューファイルのバックアップファイルとなる名前で、この名前のファイルを用意するわけではない。休止/復帰がうまくいかなかった場合、メニューファイルは置き換えられっ放しになることがあるので、後でこのファイルを/boot/grub/menu.lstとして戻す。
(2008/5/18)GRUB 2では、ファイル入れ替え機能を使用すること自体に影響はないが、使用される設定ファイルは変わるため、ファイル名を修正する必要がある。
ファイル名: /etc/hibernate/common.conf
ChangeGrubMenu yes GrubMenuFile /boot/grub/grub.cfg AlternateGrubMenuFile /boot/grub/grub-suspended.cfg BackupGrubMenuFile /boot/grub/grub.cfg.hibernate.bak
GRUB 1の背景画像の作り方は、色々なところに載っているが
- サイズは640x480
- 色数は14色
- 形式はxpmで、gzip圧縮しておく(.xpm.gz)
にする。ImageMagickのconvertコマンドで変換する方法が有名。
下の例は、縦横比4:3の画像image.jpgをリサイズ・減色して/boot/grub/splash.xpm.gzとして保存するまでの流れ。
$ convert -resize 640x480 -colors 14 img.jpg - | gzip -9 > splash.xpm.gz $ sudo mv -i splash.xpm /boot/grub/
関連記事: