我尝试了不同的选项来在 Ubuntu 20.04 中启用休眠,但没有任何效果。如何在 Ubuntu 20.04 中启用休眠选项?
小智 67
我假设您有一个可以使用的交换分区。(如果您有交换文件,则无法休眠)
安装pm-utils和hibernate:
sudo apt install pm-utils hibernate
Run Code Online (Sandbox Code Playgroud)
然后:
cat /sys/power/state
Run Code Online (Sandbox Code Playgroud)
你应该看到:
freeze mem disk
Run Code Online (Sandbox Code Playgroud)
然后运行:
grep swap /etc/fstab
Run Code Online (Sandbox Code Playgroud)
复制 UUID 值。稍后您将需要它。然后运行:
sudo nano /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
(或者你最喜欢的编辑器,如果不是 nano)。改变说的那一行
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Run Code Online (Sandbox Code Playgroud)
所以它反而说:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=YOUR_VALUE"
Run Code Online (Sandbox Code Playgroud)
然后,在保存文件并退出文本编辑器后,运行:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
要测试它,请运行:
sudo systemctl hibernate
Run Code Online (Sandbox Code Playgroud)
目前,没有任何 GNOME 扩展程序正在努力将休眠选项恢复到系统菜单中。
在我的 Lenovo Thinkpad X1 Carbon 上的 Ubuntu 20.04 内核 5.4.0-31 上测试。
Jam*_*ond 13
如果您想使用/swapfile而不是交换分区来休眠:
该顶端回答运作良好,但你没有使用的分区,你也可以使用一个默认的/swapfile。
首先,您应该至少将 /swapfile的大小增加到 RAM 的大小。
sudo apt install pm-utils hibernate uswsusp
Run Code Online (Sandbox Code Playgroud)
findmnt -no UUID -T /swapfile && sudo swap-offset /swapfile
Run Code Online (Sandbox Code Playgroud)
你会看到这样的事情:
371b1a95-d91b-49f8-aa4a-da51cbf780b2
resume offset = 23888916
Run Code Online (Sandbox Code Playgroud)
/etc/default/grub和替换字符串GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Run Code Online (Sandbox Code Playgroud)
使用您的 UUID 和偏移量:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=371b1a95-d91b-49f8-aa4a-da51cbf780b2 resume_offset=23888916"
Run Code Online (Sandbox Code Playgroud)
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
sudo systemctl hibernate
Run Code Online (Sandbox Code Playgroud)
可能您不应该在启用休眠后更改交换的大小(至少在不更改swap-offsetGRUB 中)。
有关更多详细信息,请参阅维基。
UPD:如果您想在关闭笔记本电脑盖时休眠(请参阅此内容):
禁用触摸笔记本电脑盖子的设置中的任何选项,将它们设置为“什么都不做”。
运行sudo mkdir -p /etc/acpi/events/ && sudo nano /etc/acpi/events/laptop-lid并粘贴:
sudo apt install pm-utils hibernate uswsusp
Run Code Online (Sandbox Code Playgroud)
sudo touch /etc/acpi/laptop-lid.sh && sudo chmod +x /etc/acpi/laptop-lid.sh && sudo nano /etc/acpi/laptop-lid.sh并粘贴:findmnt -no UUID -T /swapfile && sudo swap-offset /swapfile
Run Code Online (Sandbox Code Playgroud)
如果您想在 Ubuntu 20.04 * 中打开休眠功能,请按照以下步骤操作:
首先确保你在你的机器上分配了交换内存来检查
swapon --show
Run Code Online (Sandbox Code Playgroud)
然后检查您分配的交换内存是否大于或至少等于物理内存(RAM)。
使用以下命令查找交换分区。
grep swap /etc/fstab
Run Code Online (Sandbox Code Playgroud)
复制输出的 UUID for example( UUID=XXXXX-XXX-XXXX-XXXX-YYYYYYYYYY)
通过以下命令添加引导参数
sudoedit /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
更新文件
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
sudo systemctl hibernate 并且休眠现在可以在您的 Ubuntu 20.04 中运行。
本页上的所有示例似乎都缺少resume-offset使用交换文件而不是交换分区时所必需的。
增加swapfile大小以匹配 RAM 大小,最高可达 8GB。
检查正在使用的交换:
sudo swapon -s
Run Code Online (Sandbox Code Playgroud)
如果找到交换分区:
sudo swapoff -a
sudo nano -Bw /etc/fstab
Run Code Online (Sandbox Code Playgroud)
在交换分区#之前添加:UUID
# UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
swapfile如果 不存在,则添加一行:
/swapfile none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
创建swapfile:
sudo fallocate -l XG /swapfile*
Run Code Online (Sandbox Code Playgroud)
X其中 的大小以swapfileGB 为单位:
sudo mkswap /swapfile
sudo chmod 0600 /swapfile
sudo swapon /swapfile
Run Code Online (Sandbox Code Playgroud)
重启:
sudo reboot
Run Code Online (Sandbox Code Playgroud)
将resume位置和偏移添加到grub.cfg:
编辑/etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX resume_offset=XXXXX"
Run Code Online (Sandbox Code Playgroud)
从根开始使用UUID。
使用偏移量:
sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'
Run Code Online (Sandbox Code Playgroud)
更新GRUB:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
测试休眠:
sudo systemctl hibernate
Run Code Online (Sandbox Code Playgroud)
可以使用 GNOME 扩展添加休眠按钮。
swapfile请注意,使用 来创建a 时,有可能会出现漏洞fallocate。/var/log/syslog可以搜索该短语swapon: swapfile has holes以确保不会丢失数据。
也可以使用以下命令创建交换文件dd:
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
Run Code Online (Sandbox Code Playgroud)
使用时出现错误dd可能会覆盖您的硬盘。
小智 6
我刚刚添加了一个键盘快捷键。已禁用Super+ H。(我不需要它 - 默认是隐藏窗口)并使用 command 创建了一个新的快捷方式systemctl hibernate。完毕。:-)
eldwist 的解决方案对我有用,除了......
...最初不是,因为我收到以下错误:
$ sudo systemctl hibernate
Failed to hibernate system via logind: Sleep verb not supported
Run Code Online (Sandbox Code Playgroud)
如果出现此错误,您可能需要在 UEFI/BIOS 的安全菜单下禁用安全启动(请参阅与 16.04 类似的问题)。然后它对我有用(在 Ubuntu 20.04; 5.4.0-33 内核上测试,配置为双引导与 Win10)。
小智 5
SuRa在顶部的答案效果很好,但是,如果您的笔记本电脑附带交换文件而不是交换分区,那么您必须先执行几个步骤才能使其全部正常工作。高层次上:
/etc/fstab删除(或注释掉)旧的交换文件swapoff和命令从交换文件swapon切换到交换分区| 归档时间: |
|
| 查看次数: |
66069 次 |
| 最近记录: |