我一直在 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-drivers
ppa 安装了“额外”的东西和/或 396 驱动程序破坏了我笔记本电脑的休眠功能。无论如何,在撰写本文时,它与 NVidia 的 390 测试驱动程序配合使用时运行良好。在切换到 Nouveau 驱动程序之前,它工作正常。