- 使用disks工具对磁盘进行划分,调整磁盘的大小,空出用于swap的空闲空间,注意不要格式化磁盘而数据丢失
- 空出磁盘之后,磁盘类型是未分配的,盘符(device)也没有(例如/dev/sdb4),我们对其进行分配,选择磁盘类型为ext4,完成后会得到盘符(device)
- 安装交换区域在刚才的盘符;
mkswap /dev/sdxy
- 启用交换分区
swapon /dev/sdxy
- 添加信息到/etc/fstab,让开机时自动挂载swap
UUID=<UUID> none swap defaults 0 0
- 编辑/etc/default/grub,添加resume在内核中
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=enable resume=/dev/sda3"
- 更新grub
grub-mkconfig -o /boot/grub/grub.cfg
- 配置 initramfs的resume钩子:编辑/etc/mkinitcpio.conf,添加resume
HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"
注意: resume放在filesystems之前,如果有lvm,放在lvm之后。
- 重新生成initramfs 镜像
mkinitcpio -p linux
注意: 如果使用的是lts或其他,需要指定,否则将导致休眠后恢复失败。 例如我使用的是linux-lts 则使用如下命令:
mkinitcpio -p linux-lts
- 设置盖上盖子休眠,编辑/etc/systemd/logind.conf,添加
HandleLidSwitch=hibernate
- 建议重启系统,打开一些程序,合上盖子,检测休眠和恢复。
reference:
Power management/Suspend and hibernate
电源管理、睡眠和休眠
Swap
Archlinux enabling hibernation with swapfile
pm-utils (简体中文)
How to diagnose & fix Arch Linux not waking up from hibernation?