我尝试了不同的选项在 Ubuntu 20.04 中启用休眠功能,但没有任何效果。如何在 Ubuntu 20.04 中启用休眠选项?
答案1
我假设你有一个交换分区准备使用(如果你有交换文件无法使用此方法休眠)。请按照以下步骤操作:
安装
pm-utils
并hibernate
:sudo apt install pm-utils hibernate
然后:
cat /sys/power/state
您应该看到:
freeze mem disk
然后运行以下其中一行:
grep swap /etc/fstab blkid | grep swap
复制该
UUID
值。您稍后会需要它。然后运行(如果没有,请使用您最喜欢的编辑器
nano
):sudo nano /etc/default/grub
修改以下行:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
因此它改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=<YOUR_COPIED_UUID>"
注意不要错过该
UUID=
部分。然后,保存文件并退出文本编辑器后,运行:
sudo update-grub
要测试它,请运行:
sudo systemctl hibernate
此扩展似乎可以显示“休眠”菜单项,但它改变了此子菜单的整体外观:https://extensions.gnome.org/extension/3070/simpler-off-menu/。
在我的联想 ThinkPad X1 Carbon 上使用内核版本 5.4.0-31 在 Ubuntu 20.04 上进行了测试。
答案2
如果你想使用/交换文件休眠而不是交换分区:
这最佳答案效果很好,但是你不必使用分区,您也可以使用默认的/swapfile
。
首先,你应该增加 /swapfile 的大小至少与你的 RAM 大小相同。
安装依赖项:
sudo apt install pm-utils hibernate uswsusp
找到你的 UUID 和交换偏移量:
findmnt -no UUID -T /swapfile && sudo swap-offset /swapfile
你会看到类似这样的内容:
371b1a95-d91b-49f8-aa4a-da51cbf780b2 resume offset = 23888916
编辑
/etc/default/grub
并替换字符串:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
使用您的 UUID 和偏移量:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=371b1a95-d91b-49f8-aa4a-da51cbf780b2 resume_offset=23888916"
更新 GRUB:
sudo update-grub
测试你的冬眠状态:
sudo systemctl hibernate
启用休眠模式后,可能不应更改交换的大小(至少swap-offset
在 GRUB 中不进行更改)。
看维基百科更多细节。
额外奖励:如果你想笔记本电脑盖关闭时进入休眠状态(看这):
禁用设置中触碰笔记本电脑盖的任何选项,将其设置为“不执行任何操作”。
跑步:
sudo mkdir -p /etc/acpi/events/ && sudo nano /etc/acpi/events/laptop-lid
并粘贴:
event=button/lid.* action=/etc/acpi/laptop-lid.sh
跑步:
sudo touch /etc/acpi/laptop-lid.sh && sudo chmod +x /etc/acpi/laptop-lid.sh && sudo nano /etc/acpi/laptop-lid.sh
并粘贴:
#!/bin/bash LOG_FILE='/var/log/laptop-lid.log' touch $LOG_FILE && chmod 0666 $LOG_FILE grep -q closed /proc/acpi/button/lid/LID/state if [ $? = 0 ] then # close action echo "$(date '+%Y.%m.%d %H:%M:%S.%3N'): closed" >> $LOG_FILE systemctl hibernate else # open action echo "$(date '+%Y.%m.%d %H:%M:%S.%3N'): opened" >> $LOG_FILE fi
跑步:
sudo /etc/init.d/acpid restart
答案3
如果你想开启休眠功能在你的 Ubuntu 中20.04*, 按着这些次序:
首先确保您在机器中分配了交换内存以检查:
swapon --show
然后检查您分配的交换内存是否大于或至少等于物理内存(RAM)。
使用以下命令查找交换分区:
grep swap /etc/fstab
复制输出的 UUID,例如(
UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY
)。通过以下命令添加启动参数:
sudoedit /etc/default/grub
在以 开头的行上
GRUB_CMDLINE_LINUX_DEFAULT
添加:resume=UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY
注意:在所有其他线程中他们都要求添加交换分区,但在这里我们添加的是 UUID 值。
最后一行将会像这样:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY"
更新文件:
sudo update-grub
sudo systemctl hibernate
休眠功能现在可以在你的 Ubuntu 20.04 中运行。
答案4
要在 20.04 中启用休眠模式:
本页上的所有示例似乎都缺少resume-offset
使用交换文件而不是交换分区时的必要性。
增加swapfile
尺寸以匹配高达 8GB 的 RAM 大小。
检查正在使用的交换:
sudo swapon -s
如果找到交换分区:
sudo swapoff -a sudo nano -Bw /etc/fstab
在交换分区
#
之前添加:UUID
# UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none swap sw 0 0
swapfile
如果不存在,请添加一行:/swapfile none swap sw 0 0
创建
swapfile
:sudo fallocate -l XG /swapfile*
X
其中的大小(以 GB 为单位swapfile
):sudo mkswap /swapfile sudo chmod 0600 /swapfile sudo swapon /swapfile
重启:
sudo reboot
添加resume
位置和偏移量至grub.cfg
:
编辑
/etc/default/grub
:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX resume_offset=XXXXX"
从 root 端使用
UUID
。使用偏移量:
sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'
更新 GRUB:
sudo update-grub
测试休眠:
sudo systemctl hibernate
可以使用 GNOME 扩展添加休眠按钮。
swapfile
请注意,使用 创建时,可能会出现漏洞fallocate
。/var/log/syslog
可以搜索短语swapon: swapfile has holes
以确保不会丢失数据。
也可以使用以下命令创建交换文件dd
:
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
使用时的错误dd
可能会覆盖您的硬盘。