作者:E4b9a6, 创建:2021-06-15, 字数:1832, 已阅:200, 最后更新:2024-03-10
设置Manjaro的休眠分为三步,第一步是创建swapfile交换区,第二步是修改引导内核,第三步则是修改HOOKS钩子
TIP 整个过程无需重启
首先我们需要创建swapfile文件区(如果是swap分区,请参考本文结合资料引用处的ArchWiki进行设置)
# 查看swap分区信息(没有设置则没有输出)
swapon --show
# 创建大小为0的文件
sudo truncate -s 0 /swapfile
# 使用fallocate 创建指定大小的文件(单位M或者G)
# 1. 如果文件系统不是F2FS,使用下面的命令即可
sudo fallocate -l 32G /swapfile
# 2. 如果文件系统是F2FS,使用下面的命令
dd if=/dev/zero of=/swapfile bs=1G count=32 status=progress
# 授权并格式化
sudo chmod 600 /swapfile
sudo mkswap /swapfile
# 启用swap
sudo swapon /swapfile
# 查看swap分区信息(如有输出则说明成功)
swapon --show
# 添加开机自动挂载swapfile文件
sudo vim /etc/fstab
/swapfile none swap defaults 0 0
swap文件设置完成,接下来我们要改动grub和内核Hook来完成休眠设置
获取swapfile文件所在分区UUID与swapfile文件的偏移量
# 查询所有分区的UUID,记下swapfile文件所在分区的UUID
sudo lsblk -f
# 查询swapfile文件的偏移量,第一行(显示0行)的physical_offset即为偏移量,记下这个偏移量
sudo filefrag -v /swapfile
利用上述记下的swapfile所在分区UUID以及swapfile文件偏移量来设置内核参数并生成grub引导
sudo vim /etc/default/grub
# 假设原来的GRUB_CMDLINE_LINUX_DEFAULT值为
GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_pstate=enable”
# 修改后的值内容(其实就是追加到GRUB_CMDLINE_LINUX_DEFAULT值后面)
GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_pstate=enable resume=UUID=[swapfile文件所在分区的UUID]resume_offset=[swapfile文件的偏移量]"
sudo update-grub
第三步配置initramfs的resume钩子并重新生成 initramfs 镜像
sudo vim /etc/mkinitcpio.conf
# 假设原来HOOKS的值如下
HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
# 修改后的值如下(假如使用lvm分区,则要注意将resume放到lvm后面
HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"
# 重新生成initramfs镜像(51是我的Linux内核版本号,可以使用uname -a查看)
mkinitcpio -p linux51
此时休眠就可以正常使用了,使用 systemctl hibernate 进行休眠测试
资料参考