Ubuntu 10.10で、ハイバネートがうまく動作しなかった時のメモと、その対処法。
(grub2での情報が少なかったので、雑だが纏めてみた。)
うちのPCは、いつもハイバネートに失敗する。
と、このようなエラーを吐くが、少し調整すればハイバネート可能になる。
PCの搭載メモリが1G程度だと、Ubuntu 10.10でも他のバージョンでもハイバネーション・イメージを作成する段階でメモリ不足のエラーが出てハイバネートに失敗するようだ。
管理者権限で以下のファイルを作成する。
新規作成ファイル:/etc/pm/sleep.d/01_imagesize
実行フラグを立てる。
$ sudo chmod +x /etc/pm/sleep.d/01_imagesize
これでハイバネーション・イメージが作成されるようになった。
※イメージはスワップ領域に作成されるので、実メモリ以上のスワップ領域のサイズが必要。
これだけだと起動時に復帰してくれないので、initrd.imgの更新。(必要ないかもしれない。)
一部変更ファイル:/etc/initramfs-tools/conf.d/resume
※↑ハイバネートで使われるスワップのUUIDを入れる。
更新する。
$ sudo update-initramfs -u
grub2での設定。(これは必須。)
一部変更ファイル:/etc/default/grub
※↑ハイバネートで使われるスワップのUUIDを入れる。
更新する。
$ sudo update-grub
hdparmで特別な設定をしている場合、ハイバネートからの復帰時にhdparmの再設定が必要かもしれない。
※hdparmの再設定はよく分からんので、設定例ではコマンドをそのまま書いた。
新規作成ファイル:/etc/pm/sleep.d/01_hdparm
実行フラグを立てる。
$ sudo chmod +x /etc/pm/sleep.d/01_hdparm
ログは /var/log/pm-suspend.log に残る。
ログを見ると、
ハイバネートに入るとき。
/etc/pm/sleep.d/01_hdparm hibernate hibernate
/etc/pm/sleep.d/01_imagesize hibernate hibernate
ハイバネートから復帰するとき。
/etc/pm/sleep.d/01_imagesize thaw hibernate
/etc/pm/sleep.d/01_hdparm thaw hibernate
サスペンドに入るとき。
/etc/pm/sleep.d/01_hdparm suspend suspend
/etc/pm/sleep.d/01_imagesize suspend suspend
サスペンドから復帰するとき。
/etc/pm/sleep.d/01_imagesize resume suspend
/etc/pm/sleep.d/01_hdparm resume suspend
という順序と引数で処理されていた。
参考にしたサイト:
英語
http://wiki.archlinux.org/index.php/Pm-utils#Creating_your_own_hooks
日本語
http://www.revulo.com/blog/20090512.html
http://www.gfd-dennou.org/member/uwabami/cc-env/ConfigGrub.html
http://club.h14m.org/kenji/MacBook/?Ubuntu%209.10%20%A4%C7%A4%CE%A5%CF%A5%A4%A5%D0%A5%CD%A1%BC%A5%C8%C0%DF%C4%EA
(grub2での情報が少なかったので、雑だが纏めてみた。)
うちのPCは、いつもハイバネートに失敗する。
[ 5365.382516] PM: Creating hibernation image: [ 5365.390010] PM: Need to copy 131308 pages [ 5365.390010] PM: Normal pages needed: 131308 + 1024, available pages: 130686 [ 5365.390010] PM: Not enough free memory [ 5365.390010] PM: Error -12 creating hibernation image |
と、このようなエラーを吐くが、少し調整すればハイバネート可能になる。
PCの搭載メモリが1G程度だと、Ubuntu 10.10でも他のバージョンでもハイバネーション・イメージを作成する段階でメモリ不足のエラーが出てハイバネートに失敗するようだ。
管理者権限で以下のファイルを作成する。
新規作成ファイル:/etc/pm/sleep.d/01_imagesize
#!/bin/sh case "${1}" in hibernate) echo 0 > /sys/power/image_size ;; esac |
実行フラグを立てる。
$ sudo chmod +x /etc/pm/sleep.d/01_imagesize
これでハイバネーション・イメージが作成されるようになった。
※イメージはスワップ領域に作成されるので、実メモリ以上のスワップ領域のサイズが必要。
これだけだと起動時に復帰してくれないので、initrd.imgの更新。(必要ないかもしれない。)
一部変更ファイル:/etc/initramfs-tools/conf.d/resume
RESUME=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
※↑ハイバネートで使われるスワップのUUIDを入れる。
更新する。
$ sudo update-initramfs -u
grub2での設定。(これは必須。)
一部変更ファイル:/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" |
※↑ハイバネートで使われるスワップのUUIDを入れる。
更新する。
$ sudo update-grub
hdparmで特別な設定をしている場合、ハイバネートからの復帰時にhdparmの再設定が必要かもしれない。
※hdparmの再設定はよく分からんので、設定例ではコマンドをそのまま書いた。
新規作成ファイル:/etc/pm/sleep.d/01_hdparm
#!/bin/sh case "${1}" in thaw|resume) hdparm -S 50 /dev/sda hdparm -S 50 /dev/sdb ;; esac |
実行フラグを立てる。
$ sudo chmod +x /etc/pm/sleep.d/01_hdparm
ログは /var/log/pm-suspend.log に残る。
ログを見ると、
ハイバネートに入るとき。
/etc/pm/sleep.d/01_hdparm hibernate hibernate
/etc/pm/sleep.d/01_imagesize hibernate hibernate
ハイバネートから復帰するとき。
/etc/pm/sleep.d/01_imagesize thaw hibernate
/etc/pm/sleep.d/01_hdparm thaw hibernate
サスペンドに入るとき。
/etc/pm/sleep.d/01_hdparm suspend suspend
/etc/pm/sleep.d/01_imagesize suspend suspend
サスペンドから復帰するとき。
/etc/pm/sleep.d/01_imagesize resume suspend
/etc/pm/sleep.d/01_hdparm resume suspend
という順序と引数で処理されていた。
参考にしたサイト:
英語
http://wiki.archlinux.org/index.php/Pm-utils#Creating_your_own_hooks
日本語
http://www.revulo.com/blog/20090512.html
http://www.gfd-dennou.org/member/uwabami/cc-env/ConfigGrub.html
http://club.h14m.org/kenji/MacBook/?Ubuntu%209.10%20%A4%C7%A4%CE%A5%CF%A5%A4%A5%D0%A5%CD%A1%BC%A5%C8%C0%DF%C4%EA