いい加減ArchLinuxでのhibernate環境の構築についてメモっとく

 以前kernelバックエンドを使わないsuspend on disk(hibernate, s2disk)の環境を作った時も (面白いけど)苦労したのにメモってなかったのでまた(面白いけど)苦労した。
ので作業を思い出して、メモしておく。

構成

 構成はuswsusp + pm-utilsにする。
uswsuspはユーザースペースでのsuspendを可能にするツールで、pm-utilsはそのフロントエンドになる。

 スワップメモリにはパーティションではなくスワップファイルを使う。
(スワップファイルは/root/swapに置いた)

インストール

$ yaourt -S uswsusp pm-utils

設定

 uswsuspが動作するように、自分の環境をuswsuspに伝える。 + alpha

/etc/suspend.conf

snapshot device = /dev/snapshot
# いつもここ間違えるけど、/root/swap自体ではなく/root/swapがあるパーティションを指定する
resume device = /dev/sda3
# swap-offset /root/swapの結果
resume offset = 2326528
# ついでに設定
compress = y
threads = y

 pm-utilsがバックエンドにuswsuspを使うようにする。

/etc/pm/config.d/module

SLEEP_MODULE=uswsusp

 次に重要な作業をする。
ここをミスったところ、僕の環境では起動不可になった。
ここ参照。

/etc/mkinitcpio.conf

.
.
.
HOOKS="base udev autodetect modconf block filesystems keyboard fsck uresume"
.
.
.

僕はカーネルにlinux-ltsを使っているので、 -pオプションにはlinux-ltsを指定する。

# mkinitcpio -p linux-lts

完成

 これでマシンの再起動後に以下のコマンドを打てば、マシンをhibernateすることができる。 はず。

$ sudo pm-hibernate

筆者プロフィール

my-latest-logo

aiya000(あいや)

せつラボ 〜圏論の基本〜」 「せつラボ2~雲と天使と関手圏~」 「矢澤にこ先輩といっしょに代数!」を書いています!

強い静的型付けとテストを用いて、バグを防ぐのが好き。Haskell・TypeScript。