使用休眠而不是pm-hibernate强制休眠


15

我正在运行18.04,并且试图在笔记本电脑的机盖合上时让系统使用休眠模式而不是pm-休眠模式。

我在16GB的RAM上有20GB的交换分区,所以空间足够。

当我使用pm-hibernate时,会出现一个小的apci错误,当我休眠和恢复无法读取的内容时,该错误会迅速弹出。尽管休眠状态在某种意义上似乎是转储到磁盘并从磁盘还原,但它似乎处于睡眠状态,因为它以正常速率使用电池,而不是完全关闭并停止使用电池。

但是,当我使用以下方式安装的休眠模式时:

sudo apt-get install hibernate

并运行:

sudo hibernate

并从中恢复,我注意到我的机器实际上已关闭-LED停止跳动,等等-电池电量为零。这是我希望在合上机盖时看到的行为,而不是像正在积极使用计算机那样使用电池的睡眠行为。

我遵循了以下指南:

改性

/etc/systemd/logind.conf

包括:

#HandleLidSwitch=suspend
HandlelidSwitch=hibernate

并在以下位置添加了我的交换分区更改:

/etc/default/grub

要包括正确的resume =链接,并特别要求s2disk:

sudo cat /etc/pm/config.d/00sleep_module
SLEEP_MODULE="swsusp"

我已阅读以下相关的askubuntus:

我还在Lenovo和Arch论坛上阅读了以下链接:

如何确定由lid-close调用的休眠模式不是pm-hibernate休眠模式?

更新资料

这仍然是一个问题,仍然使ubuntu根本无法使用Carbon X1 6th gen。任何可以解决此问题并可能另外添加登录提示的解决方案,都几乎可以与4年前的Windows计算机一样好...;)


@Mittenchops我可以解决这个问题对我来说,请看看askubuntu.com/questions/1028947/...
克里斯托弗·威尔

1
您能否将完整的休眠/恢复周期中的日志数据添加到您的问题中?应该在/var/log/pm-suspend.log。谢谢。
大卫·佛斯特

@Mittenchops不确定,但也许我的问题与您有关。我的也是联想的硬件。
ViBE

1
我不使用休眠模式,但是您可以尝试重命名/usr/sbin/pm-hibernate/usr/sbin/pm-hibernate.OLD。然后创建/usr/sbin/pm-hibernate包含hibernate命令的bash scxript 。使用type -a hibernate找到该命令的具体路径。它在我的系统上不存在,因为我尚未安装它。
WinEunuuchs2Unix

我已经用2018年7月14日提出的包装器脚本更新了答案。
WinEunuuchs2Unix

Answers:


1

我也很讨厌必须传递URL,因此我将复制并粘贴信息并将网页附加到底部。我没有在您的链接中看到此内容。

在阅读本文时,我注意到如果您使用btrfs文件系统进行格式化,则休眠可能无法工作吗?那么,如何在Ubuntu 16.04中永久启用休眠模式?

要使Ubuntu休眠过程永久存在,您需要在命令行上使用文本编辑器创建一个新文件:

sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

系统需要root特权才能启用休眠选项,因此,应添加命令sudo。您可以使用其他文本编辑器,例如vi,gedit,emacs等。

现在,将以下文本复制并粘贴到文件中(使用鼠标;键盘快捷键将不起作用):

[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.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

CTRL+ O保存,并CTRL+ X退出纳米编辑器。

现在,注销系统,然后再次登录。现在,您将看到一个休眠选项,以及“关机”和“挂起”选项。

为您提供方便的链接是:https : //fossbytes.com/enable-disable-hibernate-option-ubuntu-power-menu/


2
这似乎在18.04中不起作用
Mittenchops

1

两种选择

第一个选项(列出的第二个选项)是检查journalctl与休眠有关的可能错误消息。如果第一个选项没有产生结果,第二个选项是创建一个包装脚本,该脚本替换pm-hibernate为“休眠”。

创建包装器脚本

创建包装器脚本可以hibernate替换pm-hibernate

查找目录命令位于

在创建包装器脚本之前,您需要知道hibernatepm-hibernate命令驻留在哪个目录中。使用以下两个命令:

$ locate bin/hibernate
/mnt/c/Program Files (x86)/CyberPower PowerPanel Business Edition/bin/hibernate.dll

$ locate bin/pm-hibernate
/mnt/clone/usr/sbin/pm-hibernate
/mnt/old/usr/sbin/pm-hibernate
/usr/sbin/pm-hibernate

您要创建的包装脚本将为/usr/sbin/pm-hibernate。我没有hibernate安装软件包,因此第一次搜索仅找到Windows实用程序。根据软件包文件清单,它应该/usr/sbin/hibernate与其他几个文件一起显示。

备份原始文件

首先,我们要对原始文件进行在线备份:

sudo cp -a /usr/sbin/pm-hibernate /usr/sbin/pm-hibernate.bak

接下来删除原始文件:

sudo rm -f /usr/sbin/pm-hibernate

创建包装器脚本

注:而不是一个包装脚本很多人觉得它更容易地创建符号链接pm-hibernatehibernate如何创建一个软或符号链接?

我喜欢gedit用于编辑,但是您可以将其替换为nanovim或任意一个喜欢的编辑器:

sudo -H gedit /usr/sbin/pm-hibernate

将出现一个空文件。粘贴以下几行

#!/bin/bash
# Wrapper script to replace pm-hibernate with hibernate package
/usr/sbin/hibernate "$@"

将包装器脚本转换为可执行文件

当前,包装脚本是常规文件。我们需要将其转换为可执行对象:

sudo chmod a+x /usr/sbin/pm-hibernate

现在,我们有了一个可操作的包装器脚本,因此每次pm-hibernate都称为hibernate运行。如顶部journalctl所述,在创建包装器脚本之前,您应该先复习一下(随后说明)。

评论 journalctl

您可以grep在以下休眠消息journalctl解决可能的问题。

我不使用休眠,但我使用暂停。以下命令使我可以查看与suspend您将替换为的所有消息hibernate

$ journalctl -b | grep -i suspend
Oct 09 22:26:33 alien eyesome[21740]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 09 22:26:48 alien systemd[1]: Starting TLP suspend/resume...
Oct 09 22:26:48 alien systemd[1]: Started TLP suspend/resume.
Oct 09 22:26:48 alien systemd[1]: Starting Suspend...
Oct 09 22:26:48 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 09 22:26:48 alien eyesome[22952]: Wakeup: Going to suspend.  Creating: /tmp/eyesome-is-suspending
Oct 09 22:26:49 alien systemd-sleep[22938]: Suspending system...
Oct 10 04:26:38 alien kernel: PM: Suspending system (mem)
Oct 10 04:26:38 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 04:26:38 alien kernel: PM: suspend of devices complete after 1142.044 msecs
Oct 10 04:26:38 alien kernel: PM: late suspend of devices complete after 19.766 msecs
Oct 10 04:26:38 alien kernel: PM: noirq suspend of devices complete after 61.505 msecs
Oct 10 04:26:38 alien kernel: Suspended for 21583.011 seconds
Oct 10 04:26:38 alien eyesome[23137]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 04:26:38 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 04:26:38 alien eyesome[23168]: Wakeup: Called from suspend.
Oct 10 04:26:41 alien systemd[1]: Started Suspend.
Oct 10 04:26:41 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 04:26:41 alien systemd[1]: Reached target Suspend.
Oct 10 04:26:41 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 04:26:41 alien systemd[1]: Stopped target Suspend.
Oct 10 04:26:42 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 04:26:52 alien eyesome[24459]: Daemon: Removed file: /tmp/eyesome-is-suspending
Oct 10 05:47:09 alien eyesome[12434]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 05:51:43 alien systemd[1]: Starting TLP suspend/resume...
Oct 10 05:51:44 alien systemd[1]: Started TLP suspend/resume.
Oct 10 05:51:44 alien systemd[1]: Starting Suspend...
Oct 10 05:51:44 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 10 05:51:44 alien eyesome[28367]: Wakeup: Suspending.  Creating /tmp/eyesome-is-suspending
Oct 10 05:51:45 alien systemd-sleep[28353]: Suspending system...
Oct 10 16:30:59 alien kernel: PM: Suspending system (mem)
Oct 10 16:30:59 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 16:30:59 alien kernel: PM: suspend of devices complete after 623.519 msecs
Oct 10 16:30:59 alien kernel: PM: late suspend of devices complete after 19.654 msecs
Oct 10 16:30:59 alien kernel: PM: noirq suspend of devices complete after 61.549 msecs
Oct 10 16:30:59 alien kernel: Suspended for 38348.943 seconds
Oct 10 16:30:59 alien eyesome[28563]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 16:30:59 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 16:30:59 alien eyesome[28599]: Wakeup: Called from suspend.
Oct 10 16:31:02 alien systemd[1]: Started Suspend.
Oct 10 16:31:02 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 16:31:02 alien systemd[1]: Reached target Suspend.
Oct 10 16:31:02 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 16:31:02 alien systemd[1]: Stopped target Suspend.
Oct 10 16:31:03 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 16:31:13 alien eyesome[30020]: Daemon: Removed file: /tmp/eyesome-is-suspending

如何sudo -H /usr/sbin/pm-hibernate打开编辑器?我正在尝试按照说明进行操作,不想做任何假设
Stewart

1
@Stewart好收获。它应该sudo -H gedit /usr/sbin/pm-hibernate是我刚刚更改的内容。
WinEunuuchs2Unix

1
@Stewart您是否正在关闭盖子,电源按钮或菜单选项?
WinEunuuchs2Unix

1
终于修好了!您的建议给了我足够的线索,因为有了一些google-fu,我最终来到了unix.stackexchange.com/a/386837
斯图尔特

1
@Stewart高兴听到。感谢您指出Unix和Linux的答案。我投票赞成。
WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.