休眠后无法恢复

休眠后无法恢复

我一直在 Ubuntu 16.04 上使用休眠功能,没有任何问题,但突然它停止正常工作。无论我是从电源菜单还是使用休眠sudo pm-hibernate,它都会关闭计算机,但当我再次打开它并从 grub 菜单中选择 Ubuntu 时,它只会显示黑屏。我尝试了一些解决方案(如下所列),但都没有用。

我真的很失望,我使用的每个 Ubuntu 版本通常都会遇到类似的休眠问题(使用不同的笔记本电脑)。

附言:我与 Windows 10 有双启动,但休眠状态长期以来一直与其完美配合。

无效:

答案1

我遇到了同样的问题。16.04 中最新的内核有一个错误。以下是我执行的明确步骤。执行第一个步骤,如果它能帮你解决问题,就到此为止。如果没有,继续。

1. 将计算机设置为使用以前的内核启动

从...开始:

uname -r

我使用的是 4.13...然后执行以下操作:

grep -i "菜单项'" /boot/grub/grub.cfg

您将在 grub 中看到不同的菜单项。在我的例子中,除了“Ubuntu,使用 Linux 4.13...”之外,还有一个使用上一个内核启动的菜单选项。它说Ubuntu,使用 Linux 4.10.0-28-generic在同一行中,您会看到类似“gnulinux-4.10.0-28-generic-advanced...(a guys of caracters here)”的内容。复制该文本,然后我们必须告诉 grub2 默认使用该内核启动:

sudo cp /etc/default/grub /etc/default/grub.back

sudo gedit /etc/default/grub

然后我插入了这一行:

GRUB_DEFAULT="gnulinux-advanced-4a50e1e8-56d9-413e-9954-55648888a31d>gnulinux-4.10.0-28-generic-advanced-4a50e1e8-56d9-413e-9954-55648888a31d"

请不要逐字复制此行,而是使用前面 grep 命令的输出。然后保存,

sudo 更新 grub

然后重新启动并检查“uname -r”的输出是否是较旧的内核(在我的情况下是 4.10...)。您现在可能可以休眠,也可能不可以。如果不行,请继续下一步。

2. 安装与默认休眠不同的内容:

就我而言,使用较旧的内核可以摆脱死机黑屏,并允许我在休眠后恢复,但磁盘映像的内容将被清除,即它与重新启动相同,而不是休眠。所以我安装了一些以不同方式休眠的东西:

sudo apt-get 安装 uswsusp

然后关闭终端,再次打开并输入:

sudo s2disk

这应该是让计算机休眠。如果恢复后,一切都和你离开时一样,那么你已经解决了问题。但你仍然需要继续执行第 4 步,以告诉 Ubuntu 你想默认使用新的东西,并且你想在应用程序中有休眠选项。

3. 告诉 grub 2 交换分区在哪里:

它对我来说仍然不起作用,所以我不得不告诉 grub 交换分区在哪里:

猫/etc/fstab

我可以在那里看到“# swap 在安装期间位于 /dev/sda2 上”,因此我再次编辑了 grub:

sudo gedit /etc/default/grub

并补充道:

GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=禁用恢复=/dev/sda2"

重点是“resume=/dev/sda2”,但之前的内容(intel blablabla)是因为其他原因而存在的。那么下一步是:

sudo 更新 grub

重新启动并再次尝试休眠并继续执行某些操作(例如,使用 vlc 打开电影):

sudo s2disk

如果恢复后内容仍然存在,则说明问题已解决。

4. 告诉 Ubuntu 使用您安装的新休眠功能而不是默认功能:

现在您必须告诉 Ubuntu 使用 s2disk 来休眠,而不是使用默认的东西:

sudo gedit /etc/pm/config.d/00sleep_module

并插入:

SLEEP_MODULE="uswsusp"

保存并关闭文件。然后:

sudo gedit /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla

并插入:

[在 upower 中重新默认启用休眠模式]

身份=unix-用户:*

操作=org.freedesktop.upower.hibernate

结果活动=是

[在 logind 中重新默认启用休眠模式]

身份=unix-用户:*

操作 = org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit

结果活动=是

重新启动并重试。

5. 如果运行第 4 步后仍无法使用休眠,sudo systemctl hibernate请执行以下操作

步骤 4 不足以在 Ubuntu 18.10 中切换到 uswsusp。

编辑休眠服务

sudo systemctl 编辑 systemd-hibernate.service

并添加以下内容

[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /usr/lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /usr/lib/systemd/system-sleep

更新 systemd

sudo systemctl 守护进程重新加载

通过运行以下命令来测试设置

sudo systemctl 休眠

答案2

@karim 我也遇到了同样的问题,下面是如何修复它:

resume=UUID=#在RESUME/etc/default/grub参数中使用交换分区的 UUID 代替其挂载点/etc/initramfs-tools/conf.d/resume

在中为交换分区创建一个条目/etc/fstab 无安装点类似这样的

# Entry for Swap : 
UUID=# none  swap    sw              0       0

/etc/default/grub使用了一个单独的条目来恢复休眠

# FOR HIBERNATION 
GRUB_CMDLINE_LINUX="resume=UUID=..."

按照@Mephisto 的解释,在地方当局 (pkla) 中创建一个政策工具包

更新 initramfs 和 GRUB

sudo update-initramfs -u -k all
sudo update-grub

重启,打开一些应用程序并使用systemctl hibernate(无需 sudo)查看是否有效

答案3

谢谢大家的回答。这个问题在内核 4.15 中得到了解决。我刚刚试了一下,它起作用了。显然 HWE 内核已经修复了这个问题 ( linux-generic-hwe-16.04 package)。

如果你使用的是 Ubuntu 16.04,你只需要安装最新的更新来升级内核。你可以阅读有关该更新的更多详细信息这里

我当前的内核版本是 4.15.0-33-generic。

答案4

我也曾被这个问题困扰过……经过多次尝试后,解决办法是重新安装 Ubuntu 18.04,现在它运行正常。我也在使用 Nvidia 的“经过测试”的驱动程序,因为之前 Nvidia 是罪魁祸首。

也许是sudo add-apt-repository ppa:graphics-driversppa 安装了“额外”的东西和/或 396 驱动程序破坏了我笔记本电脑的休眠功能。无论如何,在撰写本文时,它与 NVidia 的 390 测试驱动程序配合使用时运行良好。在切换到 Nouveau 驱动程序之前,它工作正常。

相关内容