在启用 UEFI 和安全启动的情况下进入休眠状态

在启用 UEFI 和安全启动的情况下进入休眠状态

“sudo systemctl start hibernate.target” 在 Acer B117 上使用传统启动时与 16.04 配合良好;更新到 18.04 迫使我使用 UEFI 和(Acer 要求)启用安全启动。暂停仍然有效,但我需要休眠。

交换分区处于活动状态且等于 RAM 大小 + 2GB;

GRUB_CMDLINE_LINUX_DEFAULT="安静启动恢复=UUID=myswapuuid"

journalctl -xe 显示无法访问 /sys/power/disk

cat /sys/power/disk:[已禁用]

cat /sys/power/state:冻结内存

有什么建议么?

答案1

我也有同样的问题,不幸的是,使用官方的 Ubuntu 内核是不可能的由于内核锁定补丁集 (efi-lockdown),自版本 4.13 以来。证实如下:

目前没有办法在从休眠状态返回时验证恢复映像。这可能会损害已签名的模块信任模型,因此,在我们可以使用已签名的休眠映像之前,我们会在内核锁定时禁用它。

您可以提交相关的 Bionic看这里

这是一个有争议的决定,Linus拒绝合并这些变更到Linux内核。

您可以在文章中找到更多详细信息4.17 中的内核锁定?及其评论。

因此,当我们等待一些可以与已签名的休眠映像配合使用的神奇软件时,我们只能使用另一个内核或者禁用安全启动

答案2

我能够使用 s2disk 或 pm-hibernate 进入休眠状态,但恢复失败。为了解决这个问题,因为我的系统是使用 UEFI 而不是 grub 启动的。我只需要重新安装引导加载程序。要检查您是否正在运行 UEFI,请使用以下命令:

[ -d /sys/firmware/efi ] && echo "Installed in UEFI mode" || echo "Installed in Legacy mode"

如果处于 UEFI 模式,那么我按照本指南重新安装引导加载程序,如果您使用 nvme 磁盘或 sata 磁盘,则情况会有所不同: https://support.system76.com/articles/bootloader/

关键是运行此命令:

sudo update-initramfs -c -k all

确保在你的内核启动选项中指定要从哪里恢复的分区或 UUID,例如像这样:

resume=UUID=ed8347ed-2eb4-40bc-bc77-cc53b987ed88

您可以通过以下方式添加:

  1. sudo kernel-stub -a“resume=UUID=…”
  2. 编辑 /etc/initramfs-tools/conf.d/resume 文件并添加:resume=UUID=ed8347ed-2eb4-40bc-bc77-cc53b987ed88

检查你的/var/log/syslog文件是否有类似这样的内容:

Aug  4 22:26:42 pop-os /usr/bin/kernelstub[19639]: kernelstub           : DEBUG    kopts: root=UUID=b37019a8-91f5-445f-94c1-7359a49ed5df ro quiet loglevel=0 systemd
.show_status=false resume=UUID=ed8347ed-2eb4-40bc-bc77-cc53b987ed88

如果简历缺失或错误,则需要再次更新启动内核。

相关内容