Arch Linux 休眠到Swap交换文件
建立交换文件
用root账号,使用 fallocate 命令来创建一个所需大小的交换文件(M = Mebibytes, G = Gibibytes)。例如,创建一个512 MB的交换文件:
# fallocate -l 512M /swapfile
注意: fallocate 命令用在 F2FS 或 XFS 文件系统时可能会引起问题。[1] 代替方式是使用 dd 命令,但是要慢一点:
# dd if=/dev/zero of=/swapfile bs=1M count=512
为交换文件设置权限:(交换文件全局可读是一个巨大的本地漏洞)
# chmod 600 /swapfile
创建好交换文件后,将其格式化:
# mkswap /swapfile
启用交换文件:
# swapon /swapfile
最后,编辑 /etc/fstab, 在其中添加如下的一行:
/etc/fstab
/swapfile none swap defaults 0 0
编辑/etc/mkinitcpio.conf文件:
HOOKS="... block lvm2 resume filesystems ..."
# mkinitcpio -p linux
# filefrag -v /swapfile
查找偏移指针:
Filesystem type is: ef53
File size of /swapfile is 4294967296 (1048576 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 0: 38912.. 38912: 1:
1: 1.. 22527: 38913.. 61439: 22527: unwritten
2: 22528.. 53247: 899072.. 929791: 30720: 61440: unwritten
# ls -l /dev/disk/by-uuid/ 查看swapfile文件所在盘的UUID。
lrwxrwxrwx 1 root root 10 Aug 8 19:22 415bb7cf-5a71-4481-a832-c789643ce12c -> ../../sda4
GRUB配置:
# vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/disk/by-uuid/415bb7cf-5a71-4481-a832-c789643ce12c resume_offset=38912 quiet"
更新GRUB启动文件
sudo grub-mkconfig -o /boot/grub/grub.cfg
参考:https://wiki.archlinux.org/index.php/Hibernate#Hibernation_into_swap_file