deepin官网
休眠这个功能还是很酷很实用的,对于Linux系统,休眠一般就是把内存中的数据写入硬盘(swap文件),然后关机。在下一次开机的时候将数据重新载入内存,让你快速回到上一次的工作状态,这在你开启了大量的程序但需要暂停工作的时候尤其好用。
一般来说,如果你有一个可以正常使用的swap分区,只需要在终端执行
systemctl hibernate
就可以休眠了。
如果你没办法从硬盘划分一个swap分区,你可以通过使用swap文件来进行休眠。
本教程参考了Debian的wiki
大体思路:创建swap文件-->配置swap文件-->安装uswsusp-->配置uswsusp
- 创建一个swap文件
fallocate -l 256m /swap
mkswap /swap
“256”是指以MB为单位的大小(其后的'm')。将其设置为RAM的至少一半大小(这个是debian wiki给定的数据,我建议设置为至少设置为内存相同大小)。“/swap”是交换文件的路径。它可以位于任何分区(例如root或home)。
- 进行swap文件相关设置
-
挂载swap文件
将此行添加到/etc/fstab文件中:
/swap swap swap defaults 0 0
-
减少使用swap文件
终端执行sudo sysctl -w vm.swappiness = 1
并在/etc/sysctl.d中创建一个名为local.conf的文件,为了使vm.swappiness保持不变,文件内容如下:
vm.swappiness = 1
vm.swappiness扩展知识
减少内核对swap的使用这一步主要是针对使用机械硬盘的同学,因为在机械硬盘中大量对swap进行读写会拖慢系统的速度,Debian wiki里面写的是停止内核使用swap文件,可能是原作者笔误,也可能是他瞎说的🤗
- 激活swap文件:
终端执行sudo swapon /swap
- 安装和配置相关软件
使用uswsusp这个软件,这是linux内核使用swap文件代替swap分区来进行挂起(休眠)的方法,并且还支持压缩和加密等功能。
-
安装uswsusp:
终端执行aptitude install uswsusp
-
配置uswsusp:
深度截图_选择区域_20180605160224.png
终端执行sudo dpkg-reconfigure -pmedium uswsusp
,然后会出现如下提示框
从这个问题开始全部选择确定,直到出现:
此处选择你要使用的swap文件,注:我这里是/var/swapfile这个文件
选择是否对休眠写入swap的数据加密根据需要选择就好(需要知晓的是,开启加密功能之后休眠的启动所消耗的时间会增加)。如果选择加密的话,它会提示你设定一个密码
- 对uswsusp进行进一步配置
一般配置文件/etc/uswsusp.conf内容如下所示:
#/etc/uswsusp.conf(8) -- Configuration file for s2disk / s2both
resume device= /swap
compress = y
early writeout= y
image size= 238941634
RSA key file = /etc/uswsusp.key
shutdown method = platform
resume offset = 8288
# encrypt = y 如果你选择了对数据加密,则会有这一行
“resume offset = 8288”是交换文件实际存放的地方(应该是硬盘的物理地址)。你可以终端执行swap-offset /swap
获得这个值
“resume device”必须是分区而不是交换文件。一般这行的值会在上一步完成后变成你的swap文件的路径,需要改成你的swap文件所在的分区,如/dev/sda1
编辑/etc/uswsusp.conf文件后:
终端执行 sudo update-initramfs -u
- 默认启动的配置
为了让系统启动时,默认从swap文件加载数据。将/etc/default/grub文件中的相关设置进行修改:
GRUB_CMDLINE_LINUX_DEFAULT ="resume = /dev/sda1 quiet"
其中“/dev/sda1”是交换文件所在的分区。
终端执行sudo update-grub
测试休眠:
sudo s2disk
注:配置成功之后,如果修改了uswsusp的设置要执行
sudo update-initramfs -u
和sudo update-grub
如果deepin能集成这个功能就再好不过了,配置还是略显繁琐滴
网友评论