Suspend」タグアーカイブ

Ubuntu16.04のサスペンド、ハイバネート

Ubuntu 16.04でサスペンド、ハイバネートを行う

サスペンドはできるのだが、ハイバネートがうまく動作しない。なぜハイバネート(ハイバネーション)を行いたいのか?

ハイバネーションとは、コンピュータの電源を切る直前の状態を保存して、次に電源を入れたときに電源を切る直前の状態から作業を再開する機能。「休止状態」とも呼ばれる。

サスペンドでもいいんじゃない?と思うだろ

ハイバネーション中はコンピュータの電源を完全に切ってしまうため、(バッテリーの自由放電を除いて)電力を消費しない。ハイバネーションを行うためには、メモリ内容を保存できるだけの空き領域がハードディスクに存在する必要がある。「サスペンド」機能に似ているが、サスペンドは作業状態をメモリに、ハイバネーションはハードディスクに保存する点が異なる。

<電源を完全に切ることが、ハイバネーションとサスペンドの違いである。それは電力を消費しない、つまりエネルギーゼロでメモリの内容を保存できるのである。

電源を切る直前の状態に戻す。いちいちOSやアプリケーションソフトの終了や起動を行う場合よりも時間や手間がかからず、消費電力も抑えることができる。

しかも、ウィンドウズをブートさせてウィンドウズを使用したあと、Ubuntuを立ち上げ、作業の続きをできる。こんな理にかなった方法を使わないことはない。が、Ubuntu 16.04で使えなくなっていた。

Ubuntu 16.04でサスペンド、ハイバネートを行う方法

sudo apt-get purge btrfs-tools

btrfsパーティション、ファイルシステムは使ってないので、要らない。SWAPがRAMより大きく必要になる。

sudo vi /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla

このファイルに以下の記述がなければ、書く。

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

そしてリスタート

sudo service polkitd restart
sudo ls /etc/polkit-1/localauthority/50-local.d
com.ubuntu.enable-hibernate.pkla

ここにファイルができた。

で、これでも動かない。手動でハイバネートを行ってみる。

sudo systemctl hibernate

これでもだめな場合、SWAPの設定をする。

sudo edit /etc/default/grub

ここからが以下のサイトを参考に
http://www.linux.org/threads/all-about-swap.6470/ All About Swap

If your kernel supports hibernation, but your system will not hibernate, then try this. In /etc/default/grub, replace “[GRUB_CMDLINE_LINUX=””]” with “[GRUB_CMDLINE_LINUX=”resume=UUID=4236dabb-fa7d-4066-b171-91ffa7afb4f4″]”, then run “update-grub”. Next, execute the command string below.
echo “RESUME=UUID=4236dabb-fa7d-4066-b171-91ffa7afb4f4” > /etc/initramfs-tools/conf.d/resume; update-initramfs -u
You may be wondering what is happening. Well, GRUB is being informed which swap space contains the hibernated system (if hibernation took place). Initramfs is also informed about the swap space used for hibernation. Obviously, the user must type their own UUID in-place of mine. The UUID is a special way to specify partitions.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=47ef2af5-e4cd-4f23-9f64-1466b3540905"

/etc/default/grubに、上の記述し、update-grubを行う。
/etc/initramfs-tools/conf.d/resumeに、不明なUUIDの指定があったので、消してSWAP
UUIDを記入し

resume=UUID=47ef2af5-e4cd-4f23-9f64-1466b3540905"

、update-initramfs -uを行う。
*もちろんこのUUIDは、わしの環境のであるが。

sudo blkid |grep 'TYPE="swap"'

とか

lsblk -o name,fstype,uuid

で探るんじゃ。わしのは、fstabでpriでストライピングしてあるやつだ。よくわからないが片方だけのUUIDであるが、これよくないんかな?だったらストライピングやめるか。普通swap使ってないしなぁ。
これでハイバネートできるようになった。ついでにGRUB画面で画像を表示を行った。
https://help.ubuntu.com/community/Grub2/Displays Grub2/Displays
を参考に /boot/grubにJPGファイルを入れた。

  1. ハイバネートを成功させた
  2. GRUBに画像表示をさせた
  3. ハイバネートからのパスワードをかけた xscreensaverをインストールした。

これでUbuntu 16.04で、作業を中断しても、元の状態に戻せる、ハイバネートが使えるようになった。
ところが……つづきはこちら
https://www.exodabe.com/20170124354.html

コメント、質問、感想はお気軽にどうぞ