Linux (Arch, Manjaro, KDE) Hibernate

系统休眠是个好东西,首先它不需要耗电,其次如果双系统切换的话,睡眠无法保存工作环境。

启用休眠功能的大致步骤如下:

SWAP 空间

如果在安装系统的时候有独立的 swap 分区,那就太方便了,直接就跳过这步。我当初没有创建 swap 分区的原因是要省空间,而且希望能够方便得调节 swap 的大小。

过程参考 https://wiki.archlinux.org/index.php/swap#systemd-swap

总之,就是安装 systemd-swap,修改配置文件进行大小设置以及启用,随后用 systemctl 来运行/设置开机启动 systemd-swap 服务。

由于 systemd 是动态分配 swap 文件的,可能每次使用的文件位置都不一样,不符合需求,所以就不用了。如果你需要的是一块可大可小的 swap 空间,那么 systemd 是个不错的选择。

过程参考 https://linuxize.com/post/create-a-linux-swap-file/ 就按照这个创建一个 swap file 吧。

配置休眠

参考 https://wiki.archlinux.org/index.php/Uswsusp

安装 uswsusp,修改配置文件中的 resume device 以及 resume offset (如果 swap 是文件的话需要修改),随后在 /etc/mkinitcpio.conf 中加入 uresume,最后重新生成 initramfs,命令如 mkinitcpio -p linux419(其中预设文件在 /etc/mkinitcpio.d 中)。

使用休眠

现在要使用的话运行 s2disk 就行了。

然后参考 https://wiki.archlinux.org/index.php/Uswsusp#With_systemd 修改默认行为,就可以愉快地使用 KDE 菜单中的小雪花来进行愉快的休眠了。

题外话

可以发现从休眠中启动之后,所有内存被交换出去了,然后随着使用,swap 的占用越来越小,但最后还是会残留,可见有一部分原本的内存在很长时间内都不会被使用到。