座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Ubuntu 20.04 でハイバネーションを有効化する方法

Ubuntu 20.04 でハイバネートを有効化する手順です.

スワップ領域はパーティションで, Ubuntuインストール時に用意しています. 参考にされる場合, 相違点 (スワップファイルを 使うなど) は適宜読み替えていただければと.

スワップ領域のUUIDを調べる

スワップ領域にしているパーティションのUUIDを使うので, あらかじめ調べておきます.

/etc/fstab に記載されています.

# swap was on /dev/sdb2 during installation
UUID=c9e7ba59-90a6-4f71-8863-814d166064fa none            swap    sw              0       0

GRUBの設定ファイルを編集・再生成する

ハイバネートのためのスワップ領域をLinuxカーネルへ知らせる必要があり, そのためにカーネルパラメータを指定します.

カーネルパラメータはブートローダーであるGRUBから指定することになり, そのためにGRUB設定ファイルを編集・再生成します.

/etc/default/grub というファイルを開きます.

$ sudo /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULTスワップ領域のUUIDを次のように指定します.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=c9e7ba59-90a6-4f71-8863-814d166064fa"

ファイルを編集・保存したら, /boot 配下にあるGRUB設定ファイルを再生成するために次のコマンドを実行します.

$ sudo update-grub

成功すると, 次のような出力になるはずです.

$ sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-42-generic
Found initrd image: /boot/initrd.img-5.4.0-42-generic
Found linux image: /boot/vmlinuz-5.4.0-40-generic
Found initrd image: /boot/initrd.img-5.4.0-40-generic
Adding boot menu entry for UEFI Firmware Settings
done

initramfs設定/再生成する

/etc/initramfs-tools/conf.d/resume というファイルを, 次の内容で作成します.

RESUME=UUID=c9e7ba59-90a6-4f71-8863-814d166064fa

編集後, 次のコマンドでinitramfsを再構築します.

$ sudo update-initramfs -u -k all

成功すると次のような出力になります.

$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-5.4.0-42-generic
update-initramfs: Generating /boot/initrd.img-5.4.0-40-generic

ハイバネートできるか確認する

ここまでの設定でハイバネートができるようになっているはずです.

次のコマンドで試してみます.

$ sudo systemctl hibernate

しばし待つと電源がきれるので, そのあとで電源を入れて, コマンド実行時のデスクトップの状態等が復元されることを確認します.

GNOMEの電源設定でハイバネートを選択できるようにする

ハイバネートを使えるようにするということであれば, ここまででOKです. ただ, sudo (root権限) がないと使えなかったするのは不便です.

/etc/polkit-1/localauthority/50-local.d/com.ubunt.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.lo
gin1.hibernate-ignore-inhibit
ResultActive=yes

GNOMEの電源設定で, ハイバネートを選ぶこともできるようになり, 電源ボタンを押したときにハイバネートさせるといった設定も可能になります.

まとめ

ハイバネートはストレージに退避する性質上, サスペンドよりは遅いですし, 体感的にWindowsの休止状態からの復帰に比べても遅い気がします.

加えて, なんとなくですが安定感にも乏しい気がします.

ということから, 個人的にはハイバネートの設定はしていますが, サスペンドを使うことのほうが多かったりします.