Ubuntu Weekly Recipe

第637回 GPD MicroPCにUbuntu 20.04 LTS版をインストールする

この記事を読むのに必要な時間:およそ 3 分

ハイバネートとハイブリッドスリープ

GPD MicroPCはその特性上常用するようなものではなく,必要なときにさっと使うようなものでしょう。昨今のノートPCはバッテリーの容量が増加していて普段使いだとスリープで問題ないでしょうが,GPD MicroPCの想定用途とは少しばかり乖離があります。この点においてハイバネートや最近よく使われているハイブリッドスリープを使用すれば解決しますが,やや複雑な設定が必要です。とはいえ,そこを乗り越えると格段に便利になるのでここで紹介します。

まずはスワップファイルを拡張します。昔はハイバネートを使用する場合はメモリと同容量のスワップパーティションが必要といわれていましたが,今はそのようなことはなく,そもそもスワップパーティションではなくスワップファイルになっています。しかしながら,メモリと同容量の8GBのスワップファイルであればそれほど巨大というわけでもないので素直に拡張することにします。

拡張と表現していますが,正確には作り直しになります。次のコマンドを実行してください。

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

ここでスワップファイルのUUIDが表示されるため,忘れずにメモしてください。

/etc/default/grubにスワップファイルのUUIDを追加します。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

の行に追加します。例は次のとおりです。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=6ce18d51-bc98-4218-966b-e216817f097e"

前述のとおりスワップファイルを拡張した際にUUIDが表示されているので,これを貼り付けてください。

設定完了後次のコマンドを実行してください。

$ sudo update-grub

ここで一度再起動します。

root権限がなくてもハイバネートできるよう,/etc/polkit-1/localauthority/50-local.d/com.ubuntu.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

さて,一度コマンドラインでハイバネートを実行してみます。

$ systemctl hibernate

しかし再起動しても新たにログインしたのと同じ状態になってしまいます。したがってpm-utilsパッケージに含まれている/usr/sbin/pm-hibernateと/usr/sbin/pm-suspend-hybridを使用することにします。

次のコマンドを実行してください。

$ sudo apt install pm-utils
$ sudo cp /lib/systemd/system/systemd-hibernate.service /etc/systemd/system
$ sudo cp /lib/systemd/system/systemd-hybrid-sleep.service /etc/systemd/system

見てのとおり,pm-utilsパッケージをインストールし,systemdのハイバネートとハイブリッドスリープの設定を書き換えるためコピーしています。

/etc/systemd/system/systemd-hibernate.serviceは次のように編集します。コメントは省略しています。

[Unit]
Description=Hibernate
Documentation=man:systemd-suspend.service(8)
DefaultDependencies=no
Requires=sleep.target
After=sleep.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/pm-hibernate

/etc/systemd/system/systemd-hybrid-sleep.serviceは次のように編集します。コメントは省略しています。

[Unit]
Description=Hybrid Suspend+Hibernate
Documentation=man:systemd-suspend.service(8)
DefaultDependencies=no
Requires=sleep.target
After=sleep.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/pm-suspend-hybrid

一番下の行を書き換えているだけです。

次のコマンドのとおり,設定ファイルを再び読み込んだ後に,ハイバネートを実行できるようになります。

$ sudo systemctl daemon-reload
$ systemctl hibernate

ハイブリッドスリープを実行する場合は,次のコマンドを実行してください。

$ systemctl hybrid-sleep

コマンドラインではなくGNOME Shellからハイバネートやハイブリッドスリープを実行する場合はHibernate Status Buttonをインストールするといいでしょう図3⁠。

図3 ⁠Hibernate Status Button」をインストールすると「Hibernate」「Hybrid Sleep」が追加される

画像

著者プロフィール

あわしろいくや

Ubuntu Japanese Teamのメンバー。VirtualBoxなどの翻訳を手がける。技術同人サークルteam zpn主宰。ほか原稿執筆を少々。