Enl*_*ico 16 shutdown suspend hibernate 16.04
原因很简单,我很长时间没有使用Ubuntu,所以我无法测试答案。
实际上,我的问题可能与本论坛中的这个问题(以及其他地方的这个问题)相同;确实问题是一样的,但我还是问它,因为我可以提供更多信息,并且因为我尝试了一些在网上找到的解决方案(可能会使事情变得更糟)。
我曾经休眠 Ubuntu 15.10(合上盖子)。现在我已经将它更新到 16.04(我认为这是一件好事,因为这个版本是 LTS,与 15.10 不同),我不能再使用休眠(也不是暂停!):如果我尝试使用它,Ubuntu 不会t 关机,只是屏幕变黑,电源 LED 亮起,除了手动关闭(长按电源按钮)之外,我无能为力。当我再次开机时,我看到以下几行
然后 Ubuntu 启动。
从这里我试过
sudo -s
echo shutdown > /sys/power/disk
echo disk > /sys/power/state
Run Code Online (Sandbox Code Playgroud)
和
sudo -s
echo platform > /sys/power/disk
echo disk > /sys/power/state
Run Code Online (Sandbox Code Playgroud)
只有第一个部分有效并且只有一次:部分我的意思是在残酷的关闭之后会话恢复了。
然后我尝试遵循这个建议。我不明白命令后面写的注释,所以我按原样输入了命令(认为如果在命令中有一些可以替代的东西,就会发生诸如“此命令/文件夹不存在”之类的错误):
编辑
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
Run Code Online (Sandbox Code Playgroud)
也许这是一个糟糕的主意,因为现在我明白了。
最后我找到了上面链接的问题,我去了这里,但我不知道该怎么做。
编辑 2目前,如果我输入
...$ sudo swapon -s
Run Code Online (Sandbox Code Playgroud)
我一无所获
...$
Run Code Online (Sandbox Code Playgroud)
在环顾了很长时间以寻找实际解决问题的答案(不是相关问题)之后,我在这里找到了一个提示,它为我完成了工作:
在pm
config 目录下创建一个文件:
sudo vim /etc/pm/config.d/hibernate_mode
Run Code Online (Sandbox Code Playgroud)
HIBERNATE_MODE
像这样设置变量:
HIBERNATE_MODE="shutdown"
Run Code Online (Sandbox Code Playgroud)
完成此操作后,hibernate 会像预期的那样在完成时关闭机器。pm-hibernateHIBERNATE_MODE
手册中对设置的作用进行了解释:
休眠时关闭系统电源的默认方法。如果未设置,系统将使用内核默认值作为默认值。检查 /sys/power/disk 的有效值。默认值将被 [方括号] 括起来。
我在那个文件中的默认值是platform
. 将上面的变量设置为shutdown
覆盖它,并得到我们想要发生的事情。
至于那些“相关问题”,每个人似乎都在休眠,快速调试技巧:
检查该命令是否sudo pm-hibernate
确实执行了某些操作。如果没有,这些其他提示都不会产生任何影响。如果它不起作用,请确保 1) 交换分区的大小大于 RAM 的大小和 2) 在 BIOS 中禁用安全启动。
只有在该命令生效后,才能根据需要将 hibernate 集成到您的系统中。几个常见的:
将休眠添加到 Ubuntu 菜单: 这对我来说似乎是最好的答案。官方文档也有一个略有不同的版本。
注意:一旦将休眠添加到 Ubuntu 菜单中,您可能还需要修复对sudo systemctl hibernate
. 显然,(至少对于 Ubuntu 16.04)Ubuntu 菜单选项调用sudo systemctl hibernate
而不是sudo pm-hibernate
. systemctl hibernate
通过将以下内容添加到文件中为我修复了/etc/systemd/sleep.conf
:
[睡眠]
HibernateMode=关机
如果该文件尚不存在,您可以创建它。更多信息在这里。
更改电源按钮的行为(默认情况下它显示在交互式菜单中):要将其更改为直接休眠或关机,您需要修改相关的gsettings条目。如果这会使您的船漂浮,那么许多其他答案都会通过 GUI 方式进行。要查看可用选项,请使用gsettings range org.gnome.settings-daemon.plugins.power button-power
通过查看你的最后一个图像和EDIT 2,我可以了解到 Ubuntu 在你的系统上找不到交换分区。所以我建议你应该创建一个等于或大于你的 RAM 大小的交换分区,然后通过运行重试
sudo pm-hibernate
Run Code Online (Sandbox Code Playgroud)
您可以使用 GParted 创建交换分区,运行它来安装它
sudo apt-get install gparted
Run Code Online (Sandbox Code Playgroud)
小智 0
默认情况下休眠已被禁用。
尝试这个
sudo pm-hibernate
Run Code Online (Sandbox Code Playgroud)
如果休眠测试有效,则当您想要休眠时可以继续使用 sudo pm-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
Run Code Online (Sandbox Code Playgroud)
通过此链接阅读有关 Hibernation 16.04 的更多信息
去关机
sudo shutdown -h now
Run Code Online (Sandbox Code Playgroud)
重启
sudo shutdown -r now
Run Code Online (Sandbox Code Playgroud)