创建子卷并挂载子卷
sudo mount -t btrfs /dev/sdXn /mnt
sudo btrfs subvolume create /mnt/@swap
sudo umount /mnt
sudo mkdir /swap
sudo mount -t btrfs -o subvol=@swap /dev/sdXn /swap
创建交换文件,禁用写时复制和压缩并启用交换
sudo btrfs filesystem mkswapfile --size 16G --uuid clear /swap/swapfile
sudo btrfs property get /swap compression
sudo chattr +C /swap/swapfile
sudo swapon /swap/swapfile
配置休眠
# 查看偏移
sudo btrfs inspect-internal map-swapfile -r /swap/swapfile
# 配置休眠
# /etc/initramfs-tools/conf.d/resume 写入类似
RESUME=/dev/sdXn resume_offset=<刚才查到的偏移量>
# /etc/default/grub 写入类似
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sdXn resume_offset=<刚刚查到的偏移量>"
# 生成文件系统表
su root
genfstab -U / > /etc/fstab
sudo update-initramfs -u -k all
sudo update-grub
测试休眠
systemctl hibernate
参照:https://forum.endeavouros.com/t/how-to-hibernate-with-btrfs-swapfile-luks2-systemd-boot-dracut/55620/2