hibernate后无法恢复

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

我真的很失望,因为我使用的每个Ubuntu版本,我通常都有类似的hibernate问题(使用不同的笔记本电脑)。

PS:我有Windows 10的双启动,但是hibernate与它完美配合很长一段时间。

没工作:

  • 更改/ etc / default / grub中的GRUB_CMDLINE_LINUX_DEFAULT变量

  • 清除交换空间和缓存

  • 使用netext73

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

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

从…开始:

uname -r

我说4.13 ……然后做:

grep -i“menuentry’”/ boot / grub / grub.cfg

您将在grub中看到不同的菜单条目。 就我而言,与“Ubuntu,Linux 4.13 ……”一起,有一个菜单选项可以用以前的内核启动。 它说Ubuntu,Linux 4.10.0-28-通用 。 在同一行中你有类似’gnulinux-4.10.0-28-generic-advanced …(这里有一堆字符)’复制那个文本,然后我们必须告诉grub2默认使用该内核启动:

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

sudo gedit / etc / default / grub

然后我插入了这一行:

GRUB_DEFAULT = “gnulinux先进-4a50e1e8-56d9-413e-9954-55648888a31d> gnulinux-4.10.0-28generics – 高级 – 4a50e1e8-56d9-413e-9954-55648888a31d”

请不要按字面意思复制此行,而是使用上一个grep命令的输出。 然后保存,

sudo update-grub

然后重新启动并检查“uname -r”的输出是旧内核(4.10 ……在我的情况下)。 您现在可以hibernate或不hibernate。 如果没有,请继续执行下一步。

2.安装不同于hibernate的东西比默认的东西:

在我的情况下,使用较旧的内核摆脱了死亡的黑屏并允许我在hibernate后恢复,但磁盘映像的内容将被消除,即它与重新启动相同,而不是hibernate。 所以我安装了一些不同的冬眠:

sudo apt-get install uswsusp

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

sudo s2disk

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

3.告诉grub 2交换分区的位置:

它仍然不适合我,所以我不得不告诉grub交换分区的位置:

cat / etc / fstab

我可以在那里读到“安装过程中#swap在/ dev / sda2上”,所以我再次编辑了grub:

sudo gedit / etc / default / grub

并补充说:

GRUB_CMDLINE_LINUX_DEFAULT =“intel_pstate = disable resume = / dev / sda2”

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

sudo update-grub

重新启动并再次尝试使用以下内容进行hibernate(例如,使用vlc打开电影):

sudo s2disk

如果你恢复后这些东西还在那里,你就解决了这个问题。

4.告诉Ubuntu使用你安装的新hibernate内容而不是默认值:

你现在要告诉Ubuntu使用s2disk来hibernate而不是默认的东西:

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

并插入:

SLEEP_MODULE = “uswsusp”

保存并关闭文件。 然后:

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

并插入:

[在upower中默认重新启用hibernate]

身份= UNIX用户:*

行动= org.freedesktop.upower.hibernate

ResultActive = YES

[在logind中默认重新启用hibernate]

身份= UNIX用户:*

行动= org.freedesktop.login1.hibernate; org.freedesktop.login1.handle-冬眠密钥; org.freedesktop.login1; org.freedesktop.login1.hibernate-多会话; org.freedesktop.login1.hibernate-ignore-抑制

ResultActive = YES

重新启动并重试。

我也遇到了这个困扰我的问题…经过多次尝试后修复Ubuntu 18.04,现在它运行得很好。 我也在使用Nvidia的“测试”驱动程序,因为Nvidia之前是罪魁祸首。

也许是“sudo add-apt-repository ppa:graphics-drivers”ppa安装了“Extra”Stuff和/或396驱动程序,这搞砸了我的笔记本电脑的冬眠能力。 无论哪种方式,在使用NVidia 390测试驱动程序编写本文时,它都可以完美运行。 在切换到Nouveau驱动程序之前工作。

@karim我在这里有同样的问题是如何修复它:

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

/etc/fstab为交换分区创建一个条目, 而没有像这样的安装点

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

/etc/default/grub我使用了一个单独的条目来恢复hibernate状态

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

按照@Mephisto的说明在地方当局(pkla)创建一个策略包

更新initramfs和GRUB

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

重新启动,打开一些应用程序并使用systemctl hibernate (没有sudo)来查看它是否有效

谢谢大家的答案。 这个问题在内核4.15中得到了解决。 我现在只是尝试了它,它的工作原理。 显然HWE内核修复了它( linux-generic-hwe-16.04 package )。

如果您使用的是Ubuntu 16.04,则只需安装最新的更新即可升级内核。 你可以在这里阅读更多相关细节。

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