Ubuntu 20.04启用休眠Hibernate配置过程是什么
这篇文章主要介绍"Ubuntu 20.04启用休眠Hibernate配置过程是什么",在日常操作中,相信很多人在Ubuntu 20.04启用休眠Hibernate配置过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Ubuntu 20.04启用休眠Hibernate配置过程是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
基础
广义来讲,在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空间sudo swapoff -a# 分配连续的磁盘空间,fallocate比dd命令更安全快速,空间大小参考后面的表格sudo fallocate -l 20G /swapfile# 修改权限sudo chmod 600 /swapfile# 启用swapfilesudo mkswap /swapfilesudo swapon /swapfile# 确认结果sudo swapon --showfree
swap文件的大小可以参考下面的表格
内存 | 关闭休眠时swap空间大小 | 启用休眠时swap空间大小 | 最大swap空间大小 |
---|---|---|---|
4GB | 2GB | 6GB | 8GB |
8GB | 3GB | 11GB | 16GB |
12GB | 3GB | 15GB | 24GB |
16GB | 4GB | 20GB | 32GB |
24GB | 5GB | 29GB | 48GB |
32GB | 6GB | 38GB | 64GB |
64GB | 8GB | 72GB | 128GB |
文件系统启动时挂载
/swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
配置启动内核参数
# 查看swapfile的UUIDsudo 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# 编辑initramfssudo nano /etc/initramfs-tools/conf.d/resume# 加入下面一行,UUID替换为实际值resume=UUID=51f8eab4-d775-4020-aace-0e411ef5b8ed# 保存退出,然后更新initramfs配置sudo update-initramfs -u# 重启reboot
重启后执行sudo systemctl hibernate
测试是否可以正常休眠。
配置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.hibernateResultActive=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-inhibitResultActive=yes
重启后可以在菜单中看到挂起和休眠按钮了。
到此,关于"Ubuntu 20.04启用休眠Hibernate配置过程是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!