暂停或hibernate后,Ubuntu 16.04不会关闭

实际上我的问题在这个论坛上看起来与这个问题相同( 在 其他地方也是如此 ); 确实问题是一样的,但无论如何我都会问它,因为我可以提供更多的信息,因为我尝试了一些在网络上找到的解决方案(可能会让事情变得更糟)。

我曾经hibernate过Ubuntu 15.10(关闭盖子)。 现在我已经将它更新到16.04(我认为这是一件好事,因为这个版本是LTS,不像15.10),我不能再使用hibernate(也不是暂停!):如果我尝试使用它,Ubuntu不会’ t关闭,只是屏幕变黑,电源指示灯亮,除了手动关机(长按电源按钮),我什么也做不了。 当我再次打开它时,我看到以下几行

在此处输入图像描述

然后Ubuntu启动。

从这里我尝试了

sudo -s echo shutdown > /sys/power/disk echo disk > /sys/power/state 

 sudo -s echo platform > /sys/power/disk echo disk > /sys/power/state 

只有第一次部分工作而且只有一次:部分地我的意思是在残酷的关闭之后会议恢复了。

然后我试着遵循这个建议 。 我不明白在命令之后写的注释,所以我按字面意思输入了命令(如果在命令中有什么东西要替换的话,可能会发生像“这个命令/文件夹不存在”这样的错误):

编辑

 cat /proc/meminfo sudo swapoff -a sudo dd if=/dev/zero of=/swapfile bs=1024 count=8M sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile sudo -b gedit /etc/fstab free -m swapon mount | grep " / " sudo blkid -g sudo blkid sudo filefrag -v /swapfile | grep "First block:" sudo filefrag -v /swapfile echo "resume=UUID=cdXX--X18 resume_offset=66050" | sudo tee /etc/initramfs-tools/conf.d/resume sudo -b gedit /boot/grub/menu.lst sudo -b gedit /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="... resume=UUID=cdXX--X18 resume_offset=66050" sudo update-grub -y sudo update-initramfs -u 

也许这是一个可怕的想法,因为现在我得到了这个。

IMG:

最后我发现了上面提到的问题,我去了这里 ,但我不知道该怎么做。

编辑2目前如果我进入

 ...$ sudo swapon -s 

我什么都没得到

 ...$ 

强制hibernate以关闭机器电源:

经过很长一段时间的回答,实际上解决了这个问题(不是相关问题),我在这里找到了一个提示,为我完成了工作:

pm config目录中创建一个文件:

 sudo vim /etc/pm/config.d/hibernate_mode 

这样设置变量HIBERNATE_MODE如下:

 HIBERNATE_MODE="shutdown" 

执行此操作后,hibernate将按预期完成对机器的关闭。 有关设置HIBERNATE_MODE的说明,请参阅pm-hibernate的手册:

hibernate时关闭系统的默认方法。 如果未设置,系统将使用内核默认值作为默认值。 检查/ sys / power / disk以获取有效值。 默认值将被[方括号]包围。

我在该文件中的默认值是platform 。 将上面的变量设置为shutdown会覆盖它,并获得我们想要发生的事情。

让hibernate正常工作的相关信息和技巧:

对于那些“相关问题”,每个人似乎都有冬眠,快速调试技巧:

  1. 检查命令sudo pm-hibernate实际上是做了什么。 如果没有,这些其他提示都不会产生任何影响。 如果它不起作用,请确保1)交换分区的大小大于RAM的大小,并且2)在BIOS中禁用安全引导。

  2. 只有一旦该命令有效,请考虑将hibernate集成到您的系统中。 几个常见的:

    • 将hibernate添加到Ubuntu菜单: 这似乎是我的最佳答案。 官方文档的版本也略有不同。
      注意:一旦将hibernate添加到Ubuntu菜单中,您可能还需要修复对sudo systemctl hibernate的替代调用。 显然,(至少对于Ubuntu 16.04)Ubuntu菜单选项调用sudo systemctl hibernate而不是sudo pm-hibernate 。 通过将以下内容添加到文件/etc/systemd/sleep.conf来修复systemctl hibernate

      [睡觉]
      HibernateMode =关闭

      如果该文件尚不存在,您可以创建它。 更多信息在这里 。

    • 更改电源按钮的行为(默认情况下,它显示在交互式菜单中):要将其更改为直接hibernate或关闭,您需要修改关联的gsettings条目。 如果漂浮你的船,许多其他答案通过GUI方式。 要查看可用选项,请使用gsettings range org.gnome.settings-daemon.plugins.power button-power

通过查看您的上一张图片和编辑2 ,我可以理解Ubuntu无法在您的系统上找到交换分区。 所以我建议您创建一个等于或大于RAM大小的Swap分区,然后再运行一遍

 sudo pm-hibernate 

您可以使用GParted创建交换分区,运行它来安装它

 sudo apt-get install gparted 

从15.10升级到16.04后我遇到了同样的问题:

  • 关上盖子什么也没做
  • 使用系统托盘中的菜单项手动挂起导致半暂停状态,唯一的出路是重置系统。

我解决了这些问题

  1. 将内核升级到4.4.8(在此菜单暂停之后为我工作)
  2. HandleLidSwitchDocked=suspend行添加到/etc/systemd/logind.conf(使盖子开关再次工作)。

我认为这两个问题都是应该修复的错误( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1574120 )。

默认情况下已禁用Hibernate。

试试这个

 sudo pm-hibernate 

如果hibernate测试有效,你可以在想要hibernate时继续使用sudo pm-hibernate命令。

您还可以在菜单中启用hibernate选项。 为此,请使用您喜欢的文本编辑器创建/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla。 将以下内容添加到文件并保存:

 [Re-enable hibernate by default in upower] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes [Re-enable hibernate by default in logind] Identity=unix-user:* Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions ResultActive=yes 

通过此链接阅读有关hibernate16.04的更多信息

去关机

 sudo shutdown -h now 

重启

 sudo shutdown -r now