问题描述
在Ubuntu 12.04及更新版本中,hibernation has been disabled by default in policykit。我怎样才能让这回来?
最佳解决思路
如果此答案在Ubuntu 13.10中无效,请参阅here以获取备选答案
您可以按照官方文档here。休眠状态为12.04上的disabled,适用于未通过Ubuntu认证的机器。
为了启用休眠功能,您需要通过在终端中运行sudo pm-hibernate
来测试其是否正常工作。系统会尝试休眠。如果您能够再次启动系统,那么您可以更安全地添加覆盖。
为此,请开始编辑:
sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
填写它:
[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
或在14.04及以后:
[Re-enable hibernate by default for login1]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes
[Re-enable hibernate for multiple users by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
按Ctrl
– O
然后按enter
保存,然后按Ctrl
– X
退出nano。
重新开始和休眠回来了!
或者运行killall unity-panel-service
以重置菜单。
然后,某些用户需要运行sudo update-grub
才能使休眠选项在电源菜单中可用。某些用户可能还必须至少注销然后登录才能使其显示在右上方的电源菜单中。
次佳解决思路
首先,您需要测试您的机器是否支持休眠。使用以下命令测试它:
sudo pm-hibernate
# or for newer Ubuntus like 17.04
sudo systemctl hibernate
Ubuntu 16.04及以上版本
要在界面中启用,您需要运行sudo nano /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
Ubuntu 14.04和15.04
为了在界面中启用,你需要为Ubuntu 14.04和15.04运行sudo nano /etc/polkit-1/localauthority.conf.d/52-enable-hibernation.conf
并填写:
[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Re-enable hibernate by default for login1]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
它有几个节,因为你可能有多个用户(所以这不取决于multiple-users或者更多的是经理而不是登录1)
正品最新文档https://help.ubuntu.com/stable/ubuntu-help/power-hibernate.html
第三种解决思路
此外,对于那些想要禁用暂停按钮(出于各种原因),类似地继续……
选择任何文件名,但这是一个冗长的/惯例:
sudoedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.disable-suspend.pkla
填写它:
[Disable suspend by default]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no
Ctrl
+ O
,Enter
,Ctrl
+ X
不需要重新启动,只要进入关机菜单,它就会消失。
第四种思路
还有一件事:
当您想要将休眠选项添加到XFCE的面板时,您必须将right-click命名(topright)并选择properties
。
之后会弹出一个屏幕:
确保你像我一样检查Hibernate。
第五种思路
首先,我建议您测试一下您的笔记本电脑是否支持休眠模式,因为默认情况下休眠模式被禁用的原因是因为它有时会在某些机器上产生致命的结果。通过测试你的机器
Ctrl
+ Alt
+ T
,然后是sudo pm-hibernate
你的机器应该休眠。冬眠后唤醒机器并观察其是否出现故障或其是否正常工作。如果您在休眠后出现任何异常情况,那么我建议您不要继续执行以下步骤。但是,如果它工作得很好,请继续通过激活休眠模式
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
编辑打开的文件并添加以下行:
[Re-enable hibernation]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
之后,重新启动计算机,登录后,您应该在右上角的设置角上看到休眠选项。
第六种思路
如果/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
的响应不起作用,请不要忘记通过以下方式删除文件:
sudo rm /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
并尝试使用TuxOnIce。
首先确保你有足够的交换。它应该与RAM的大小相同或更大。使用命令
free
规则交换>纪念品。如果情况并非如此,请扩大交换大小。然后通过安装TuxOnIce
sudo add-apt-repository ppa:tuxonice/ppa
sudo apt-get update
sudo apt-get install tuxonice-userui linux-generic-tuxonice linux-headers-generic-tuxonice
然后你可以尝试通过以下方式进行一次hibernate测试:
sudo pm-hibernate
在你做之前,不要忘记保存你的工作。
如果一切正常,您的电脑将关闭。开启它之后,您将使桌面处于休眠状态之前的状态。
第七种思路
使用脚本启用休眠模式
我已经将上面的答案翻译成bash
脚本。这使得在多台机器上的安装变得不那么烦人。
脚本enable-hibernate
:
#!/bin/bash
#http://askubuntu.com/a/94963/164341
cat << '_EOF_' |sudo tee /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
[Enable Hibernate]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
_EOF_
clear
echo
echo 'Hibernate enabled.'
echo
脚本disable-suspend
:
#!/bin/bash
#http://askubuntu.com/a/154821/164341
cat << '_EOF_' |sudo tee /etc/polkit-1/localauthority/50-local.d/com.ubuntu.disable-suspend.pkla
[Disable suspend by default]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=no
_EOF_
clear
echo
echo 'Suspend disabled.'
echo
注意:不要忘记chmod +x
这两个脚本使它们可执行。
第八种思路
一个简单的命令,除了non-interactively之外,它与接受的答案完全相同:
cat <<EOF | sudo tee /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
EOF
第九种思路
在12.04中,我成功启用了指示器菜单中的休眠选项来休眠。但是我仍然无法从休眠状态成功恢复。我确实按照以下步骤解决了这个问题:
在12.04启用Hibernate
为了启用Hibernate,我遵循了Dima的this answer。
启用休眠后,我可以休眠。但问题是,我无法从休眠成功恢复。每当我从休眠状态启动我的电脑时,它就像正常启动一样启动。所以,我必须做这些事情才能从休眠状态恢复。
修复能够从休眠恢复
有两种方法可以解决这个问题。
1.编辑/etc/initramfs-tools/conf.d/resume
文件
-
首先获取交换分区的UUID。
sudo blkid | grep swap
这将输出一行类似于这样的内容:
/dev/sda12: UUID="a14f3380-810e-49a7-b42e-72169e66c432" TYPE="swap"
实际的线路不符合这个。在
"..."
双引号之间复制UUID的值。 -
打开简历文件
gksudo gedit /etc/initramfs-tools/conf.d/resume
并在该文件中添加一行这样的行
RESUME=UUID=a14f3380-810e-49a7-b42e-72169e66c432
不要忘记替换从步骤1获得的实际UUID值。保存该文件并退出gedit
-
然后在终端中执行这个命令
sudo update-initramfs -u
您现在可以从休眠状态恢复
2.编辑/etc/default/grub
文件。
-
打开终端并执行以下命令将其打开gksudo gedit /etc /default /grub
-
会有一行像
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
。编辑行以在单词
splash
之后插入RESUME=UUID=<your-uuid-value-here>
。例如,在我的情况下,编辑后该行看起来像这样
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=a14f3380-810e-49a7-b42e-72169e66c432"
确保您使用了从
sudo blkid | grep swap
命令获得的UUID值。 -
然后执行此命令
sudo update-grub
这也使你能够从休眠状态成功恢复。
经过两次Ubuntu安装测试,两者都有效