Ubuntu20.04启用休眠Hibernate配置过程是什么

这篇文章主要介绍“Ubuntu 20.04启用休眠Hibernate配置过程是什么”,在日常操作中,相信很多人在Ubuntu 20.04启用休眠Hibernate配置过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ubuntu 20.04启用休眠Hibernate配置过程是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

成都创新互联公司主营千阳网站建设的网络公司,主营网站建设方案,成都App定制开发,千阳h5微信小程序定制开发搭建,千阳网站营销推广欢迎千阳等地区企业咨询

基础

广义来讲,在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 suspendsystemctl hibernatesystemctl hybrid-sleep

配置

  1. 配置/swapfile,启用休眠需要比内存稍大的swap空间,推荐使用swapfile,从2.4内核开始, swapfile的性能已经不弱于swap分区,并且更容易调整大小,如果使用btrfs文件系统,需要内核升级到5.0以上才支持swapfile

# 先关闭已有的swap空间
sudo swapoff -a
# 分配连续的磁盘空间,fallocate比dd命令更安全快速,空间大小参考后面的表格
sudo fallocate -l 20G /swapfile
# 修改权限
sudo chmod 600 /swapfile
# 启用swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 确认结果
sudo swapon --show
free

swap文件的大小可以参考下面的表格

内存关闭休眠时swap空间大小启用休眠时swap空间大小最大swap空间大小
4GB2GB6GB8GB
8GB3GB11GB16GB
12GB3GB15GB24GB
16GB4GB20GB32GB
24GB5GB29GB48GB
32GB6GB38GB64GB
64GB8GB72GB128GB
  1. 文件系统启动时挂载/swapfile

echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
  1. 配置启动内核参数

# 查看swapfile的UUID
sudo findmnt -no UUID -T /swapfile
# 查看swap_file_offset,忽略..符号
sudo filefrag -v /swapfile | awk '{ if($1=="0:"){print substr($4, 1, length($4)-2)} }'
# 编辑grub文件
sudo nano /etc/default/grub
# 将grub文件中GRUB_CMDLINE_LINUX_DEFAULT参数修改为如下形式
# 其中UUID和resume_offset的值更换为上面两个命令的输出
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=51f8eab4-d775-4020-aace-0e411ef5b8ed resume_offset=34816"
# 保存退出,然后更新grub配置
sudo update-grub
# 编辑initramfs
sudo nano /etc/initramfs-tools/conf.d/resume
# 加入下面一行,UUID替换为实际值
resume=UUID=51f8eab4-d775-4020-aace-0e411ef5b8ed
# 保存退出,然后更新initramfs配置
sudo update-initramfs -u
# 重启
reboot

重启后执行sudo systemctl hibernate测试是否可以正常休眠。

  1. 配置Gnome界面

    这时休眠功能已经生效,但是每次都需要输入命令太繁琐, 我们需要配置Gnome界面按钮

    首先安装Hibernate Status Button插件

    然后增加如下配置文件

# 新建配置文件
sudo nano /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

重启后可以在菜单中看到挂起和休眠按钮了。

到此,关于“Ubuntu 20.04启用休眠Hibernate配置过程是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


文章标题:Ubuntu20.04启用休眠Hibernate配置过程是什么
URL网址:http://myzitong.com/article/gsospo.html