ubuntu 20.04でハイバーネーション

ubuntuをノートPCで使っているのですがハイバーネーション(古い?)に相当する機能が見たありません。ほぼAC電源につなげて使ってはいますが、スタンバイだけだとバッテリが切れたときに落ちてしまうのでは・・・。というわけでハイバネーションを有効にする作業をしてみました。

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0637?page=2

https://askubuntu.com/questions/1240123/how-to-enable-the-hibernate-option-in-ubuntu-20-04

 

ハイバネーションをサポートするためには、kernelの起動パラメーターにswap情報を追加する必要があるそうです。

  1. スワップパーティションのUUID指定する
  2. スワップファイル名を指定する
  3. スワップファイルのUUIDを指定する
  4. スワップファイルの存在するパーティションのUUIDとスワップファイルのオフセットを指定する

どれがサポートされているかは環境に依存するようです。私の環境で/etc/fstabファイルを覗いてもスワップパティションはありませんでした。2,3,4をいろいろためしたところ、4にてうまく行くようになりました。

スワップファイルの再作成

$ swapoff -a
$ sudo fallocate -l 8g /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile

(8GBのスワップファイルを作成する場合)

kernel起動パラメーターの調査

$findmnt -no UUID -T /swapfile && sudo swap-offset /swapfile
03430175-b7a6-4847-b678-c6413e36e2ae
resume offset = 57939968

kernel起動パラメーター修正

$sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

を以下のように修正

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=371b1a95-d91b-49f8-aa4a-da51cbf780b2 resume_offset=23888916"

その後、grubの起動ファイルを更新

&sudo update-grub

hibernateの動作確認

$sudo systemctl hibernate

ハイバネーションしてPCの電源が切れます。
その後電源をいれてkernel起動パラメーターがうまく反映されれば、作業環境が元通りになります。私は上記2,3,4をいろいろ試しましたが。

スリープ後一定時間でバイバネーションに移行

毎回ハイバネーションをさせると起動までに時間がかかりますし、SSDの寿命を縮めてしまいます。suspend-then-hibernateという仕組みを有効にします。

$sudo vi /etc/systemd/sleep.conf

#HibernateDelaySec=180minの部分をコメントを外して適当な時間を設定します。

sudo ln -s /usr/lib/systemd/system/systemd-suspend-then-hibernate.service \
/etc/systemd/system/systemd-suspend.service

あとはスリープの動作をsuspend-then-hibernateの置換します。

 

これでWindowsノートPCと比較しても違和感なく使えるようになります。

コメントを残す

CAPTCHA