大部分情况下,为了便于调整和配置的灵活性,我们一般使用 Swap File。
参考资料:Arch Wiki,Arch Wiki,Arch BBS,
Table of Contents
建立 Swap File(参考 Arch Wiki)
手动方式
建立交换文件
用root账号,使用 fallocate
命令来创建一个所需大小的交换文件(M = Mebibytes, G = Gibibytes)。例如,创建一个16G 的交换文件(用作休眠,最好设置为你电脑内存的大小):
# fallocate -l 16G /swapfile
注意: fallocate 命令用在 F2FS 或 XFS 文件系统时可能会引起问题。[1] 代替方式是使用 dd 命令,但是要慢一点:
# dd if=/dev/zero of=/swapfile bs=1M count=512
为交换文件设置权限:(交换文件全局可读是一个巨大的本地漏洞)
# chmod 600 /swapfile
创建好交换文件后,将其格式化:
# mkswap /swapfile
Tip:这里会有一个UUID,没有任何用处。
启用交换文件:
# swapon /swapfile
最后,编辑 /etc/fstab
, 在其中添加如下的一行:
/etc/fstab
/swapfile none swap defaults 0 0
设置休眠(参考 Arch Wiki)
设置 grub
设置 resume(用于告诉系统应该从哪个硬盘设备恢复)
获取 swap file 所在的分区的 UUID,例如我用的是 LVM
lsblk -no UUID /dev/XzRoot/root
将这串 UUID(2cee6498-2bd1-496f-9801-164ddddcc9c3) 填入 resume
resume=UUID=2cee6498-2bd1-496f-9801-164ddddcc9c3
当然,你也可以填 resume=/dev/XzRoot/root
获取 resume_offset
运行 sudo filefrag -v /swapfile
找到第一行第一个拥有两个句点的数字。如截图所示,为:78610432
设置 resume_offset(用于告诉系统应该从哪个具体的位置恢复)
将刚刚用 swap file 获得的值填入如图所示的 resume_offset。
resume_offset=78610432
重新生成grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
设置 Kernel Module
编辑 mkinitcpio.conf 的 HOOKS 项
启动钩子的关键词请参考 ArchWiki
添加 resume 钩子
# /etc/mkinitcpio.conf
HOOKS=(base udev autodetect modconf block lvm2 resume filesystems keyboard fsck)
重新编译镜像
sudo mkinitcpio -p 你的内核名称
The End
在第一次休眠之前,需要重新启动才能激活该功能。
Pingback: ArchLinux 配置指南 - xzOS