Ubuntu(Hardy)のサスペンドとハイバネート その2 改訂
Ubuntu(Hardy)のサスペンドとハイバネートで紹介したスクリプトが大分前から動作しなくなっていたので見直した。
復帰時にswap領域が認識されず、「Unable to find swap-space signature」と表示される件については、「/etc/initramfs-tools/conf.d/resume」というファイルに、
RESUME=LABEL=SWAP
と書いて保存し、
でswapパーティションに「SWAP」とラベルを付ければ正しく動作する用になった。
# []mkswap -L SWAP /dev/[]sdaX
他のパーティションにLinuxをインストールし/bootとswapを共有する場合に必用になる、ハイバネートで電源を落とした後復帰時に表示されるGrubメニューを変更するスクリプト「/etc/pm/sleep.d/95-grub-changemenu.sh」に関しては、変更するターゲットを「/boot/grub/menu.lst」から「/boot/grub/grub.conf」に変更する。
#!/bin/bash . /usr/lib/pm-utils/functions TARGET="/boot/grub/grub.conf" grub_modify() { UNAME_R=$(uname -r) ; test -w $TARGET || return 1 ; local -i gdefault=0 ; local ttl rest ; grep '^title' $TARGET | while read ttl rest ; do if [ -z "$(echo $rest |fgrep $UNAME_R)" ] ; then gdefault=$gdefault+1 ; else sed -i~ -r "\ s/^(default\s+)[[:digit:]]/\1${gdefault}/;\ s/^(timeout\s+)5/\11/;\ s/^#\s*(hiddenmenu)/\1/;\ " $TARGET ; return 0 ; fi done return 1 ; } grub_resume() { cp -a ${TARGET}~ $TARGET ; return 0 ; } case "$1" in hibernate) grub_modify; ;; thaw) grub_resume; ;; *) ;; esac exit $?
再度説明すると、引数がhibernateの場合、grub.confをgrub.conf~にバックアップし、sedで書き換える。
具体的には、Ubuntuの現在のカーネルをdefaultにし、timeoutを5から1にし、hiddenmenuのコメントアウトを取り払っている。
引数がthawの場合はgrub.conf~をgrub.confに書き戻す。