@[TOC]
使用了swap文件,大小应大于内存,具体设置方法参见Ubuntu调整swap大小
1. 找出交换文件所在分区的UUID
findmnt -no UUID -T /swapfile
在此示例中为 a742e8c6-fd89-46d3-8e75-e518121f08cc
2. 找出交换文件的偏移量
sudo filefrag -v /swapfile
复制 physical_offset: 中第一行第一列(0:)的值,不含后面的两个“.”,在此示例中是 27680768 。
3. 编辑 /etc/default/grub
sudo vim /etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT这一行,向 splash 后添加以下内容
resume=UUID=第一步中获得的UUID resume_offset=第二步中获得的偏移量
例如在此示例中为
resume=UUID=a742e8c6-fd89-46d3-8e75-e518121f08cc resume_offset=27680768
4. 更新GRUB配置
sudo update-grub
5. 编辑 /etc/initramfs-tools/conf.d/resume
sudo vim /etc/initramfs-tools/conf.d/resume
如果文件存在且有一行以 RESUME 开头,则编辑该行,没有则添加内容,内容如下所示
RESUME=UUID=第一步中获得的UUID resume_offset=第二步中获得的偏移量
在本示例中为
RESUME=UUID=a742e8c6-fd89-46d3-8e75-e518121f08cc resume_offset=27680768
6. 重新生成 initramfs
sudo update-initramfs -c -k all
7. 重启电脑,然后使用以下命令测试
sudo systemctl hibernate
注意
- 若安装了NVIDIA驱动且安装了CUDA
则需删除 /etc/systemd/system 下的三个文件
```
nvidia-hibernate.service
nvidia-resume.service
nvidia-suspend.service
```
然后执行
```bash
systemctl daemon-reload
```
最后才能成功使用挂起或休眠
- 和Windows不同的是,若休眠时电脑外接了设备,例如显示器,或连接有外设,下次启动时如果更换了外接设备(显示器或外设等),则有可能启动失败,这时需要按住 alt + Sysrq 键,然后依次在键盘上按下 r e i s u b(即busier倒过来) ,系统就会安全重启。因此建议休眠时先拔掉所有外接设备再休眠,启动时是否外接设备则不影响
8. 为休眠模式添加图标
sudo vim /usr/share/applications/hibernation-mode.desktop
写入以下内容
[Desktop Entry]
Type=Application
Name=Hibernation Mode
GenericName=Hibernation Mode
Comment=Enter Hibernation Mode
NoDisplay=false
Icon=drive-multidisk
Exec=systemctl hibernate
Terminal=true
Categories=System;Utility;Settings;
即可在应用程序菜单看到图标,或在菜单内搜索 Hibernation Mode ,点击即可进入休眠模式