Ubuntu 20.04 启用休眠 (Hibernate) 配置过程
最近经常带笔记本回家工作,每次都需要先关闭打开的虚拟机、资料文档和开发环境,回家之后再打开,特别繁琐,所以研究了下 Ubuntu 20.04(20.10)如何配置休眠模式。
基础
广义来讲,在 Linux 中支持三种睡眠模式,分别是:
Suspend to RAM,即狭义的挂起(Suspend),本文后面提到挂起都是指这种模式。
Suspend to Disk,即我们常说的休眠(Hibernate)。
Suspend to Both,也被称作 Hybrid Suspend,是上面两种模式的混合,兼具两种模式的优点(和缺点)。
Ubuntu 桌面版默认只有挂起(Suspend)模式,没有启用休眠(Hibernate)模式。
挂起和休眠的目标都是保存冻结系统当前状态,后续需要时“快速”唤醒恢复,但是两者的实现方式是不同的。
挂起时系统的运行数据仍然保存在内存(RAM,通常也叫 MEM)中,所以系统还是会以较低的功耗消耗电池电量。这种状态下唤醒系统恢复非常快速,在普及 SSD 的现在是包括苹果在内很多操作系统的默认选项。
休眠时系统的运行数据被写入磁盘(DISK),系统也会完全切断电源(大部分情况下),唤醒时需要先从硬盘读取数据到内存,因为恢复速度比挂起慢,实测甚至要慢于开机(20s vs 10s)。
休眠的好处就是笔记本实际是关机状态,完全不耗电不发热,不用担心意外断电、进水和误触键盘唤醒系统,可以放心的携带和保存。
Linux 底层有两种实现来支持挂起和休眠,一种是内核(kernel)自带的 swsusp,另一种是 uswsusp('Userspace Software Suspend') ,后者封装了前者,并且提供了更多的功能,通常 swsusp 已经够用了。
swsusp 的原理是向/sys/power
目录中的文件写入特定的状态字符串来操作系统的状态。
最重要的是/sys/power/state
、/sys/power/mem_sleep
、/sys/power/disk
三个文件,分别保存了当前系统支持的睡眠模式、挂起方法、休眠方法,具体信息可以参考官方文档
Systemd 工具提供了睡眠管理的高级命令systemctl suspend
、systemctl hibernate
、systemctl hybrid-sleep
。
配置
配置
/swapfile
,启用休眠需要比内存稍大的 swap 空间,推荐使用 swapfile,从 2.4 内核开始,swapfile 的性能已经不弱于 swap 分区,并且更容易调整大小,如果使用 btrfs 文件系统,需要内核升级到 5.0 以上才支持 swapfile
swap 文件的大小可以参考下面的表格
文件系统启动时挂载
/swapfile
配置启动内核参数
重启后执行sudo systemctl hibernate
测试是否可以正常休眠。
配置 Gnome 界面
这时休眠功能已经生效,但是每次都需要输入命令太繁琐,我们需要配置Gnome界面按钮
然后增加如下配置文件
重启后可以在菜单中看到挂起和休眠按钮了。
版权声明: 本文为 InfoQ 作者【OutOfMemory1024】的原创文章。
原文链接:【http://xie.infoq.cn/article/af26942709c82ab1c7cd47f87】。文章转载请联系作者。
评论