Archlinux 设置休眠到swap文件

系统:Archlinux
内核:Kernel: 5.13.10-arch1-1
桌面:KDE
引导:grub

查看内存和交换分区大小

free -m          #默认单位为k, -m 单位为M

请先自行设置并创建交换分区文件

dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress #创建8G的交换空间 大小根据需要自定
chmod 600 /swapfile #设置正确的权限
mkswap /swapfile #格式化swap文件
swapon /swapfile #启用swap文件

在/ect/fstab中追加swap文件

/swapfile none swap defaults 0 0

[选] 修改swapfile大小,改完需要重新设置grub

sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=32768 status=progress #创建32G的交换空间
sudo mkswap /swapfile
sudo swapon /swapfile

设置grub

获取resume

先进入到swap文件所在目录,执行

findmnt -no UUID -T /swapfile

得到以下返回内容

b793f058-d9f2-4657-9114-efba050c17e7

获取resume_offset

filefrag -v /swapfile | awk '{ if($1=="0:"){print substr($4, 1, length($4)-2)} }'

得到以下返回信息

4288512

随后编辑grub配置文件

nano /etc/default/grub

将以下内容添加到GRUB_CMDLINE_LINUX_DEFAULT= ""中

resume=UUID=b793f058-d9f2-4657-9114-efba050c17e7 resume_offset=4288512 quiet

注意将uuid和resume_offset的值修改为你获取到的值

随后重新生成grub配置

grub-mkconfig -o /boot/grub/grub.cfg

设置 Kernel Module

nano /etc/mkinitcpio.conf

将resume添加到hooks中,找到以下代码

HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)

修改为

HOOKS=(base udev resume autodetect modconf block filesystems keyboard fsck)

随后重新生成镜像即可

mkinitcpio -P linux

参考文献:
[1] Power management (简体中文)/Suspend and hibernate (简体中文)

posted @ 2024-07-26 22:20  jokerpoker  阅读(1)  评论(0编辑  收藏  举报