休眠后无法恢复

Kar*_*bol 9 boot grub2 dual-boot suspend hibernate

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

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

PS:我在 Windows 10 上有双启动,但 Hibernate 与它完美地工作了很长时间。

没有用:

Mep*_*sto 9

我有同样的问题。16.04 的最新内核中存在一个错误。这是我所做的明确步骤。做第一个,如果它为你解决了问题,就停在那里。如果没有,请继续。

1.设置电脑用以前的内核启动

从...开始:

用户名 -r

我的说 4.13 ......然后做:

grep -i "menuentry '" /boot/grub/grub.cfg

您将在 grub 中看到不同的菜单项。在我的例子中,连同“Ubuntu, with Linux 4.13 ...”,有一个菜单选项可以使用以前的内核启动。它说Ubuntu,带有 Linux 4.10.0-28-generic。在同一行中,您有类似“gnulinux-4.10.0-28-generic-advanced...(这里有一堆字符)”之类的内容,复制该文本,然后我们必须告诉 grub2 默认使用该内核启动:

须藤cp /etc/default/grub /etc/default/grub.back

须藤 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 命令的输出。然后保存,

须藤更新-grub

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

2.安装不同的东西来休眠而不是默认的:

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

sudo apt-get 安装 uswsusp

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

须藤s2disk

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

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

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

猫 /etc/fstab

我可以在那里读到“#swap was on /dev/sda2 during installation”,所以我再次编辑了 grub:

须藤 gedit /etc/default/grub

并补充说:

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

重要的部分是“resume=/dev/sda2”,但之前的事情(intel blablabla)由于其他原因在那里。那么,下一步是:

须藤更新-grub

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

须藤s2disk

如果恢复后这些东西仍然存在,则说明问题已解决。

4. 告诉 Ubuntu 使用你安装的新的休眠东西而不是默认的:

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

须藤 gedit /etc/pm/config.d/00sleep_module

并在那里插入:

SLEEP_MODULE="uswsusp"

保存并关闭文件。然后:

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

并在那里插入:

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

身份=unix-用户:*

行动=org.freedesktop.upower.hibernate

结果活动=是

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

身份=unix-用户:*

Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-抑制

结果活动=是

重新启动并重试。

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

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

编辑休眠服务

须藤 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
Run Code Online (Sandbox Code Playgroud)

更新 systemd

须藤 systemctl 守护进程重新加载

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

须藤 systemctl 休眠


Kar*_*bol 2

谢谢大家的答案。该问题在内核 4.15 中得到解决。我现在刚刚尝试过并且有效。显然 HWE 内核修复了它 ( linux-generic-hwe-16.04 package)。

如果您使用的是Ubuntu 16.04,则只需安装最新更新即可升级内核。您可以在此处阅读有关该内容的更多详细信息。

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