我正在运行 18.04,并尝试让我的系统在笔记本电脑盖子关闭时使用休眠模式而不是 pm-hibernate。
我在 16GB 的 RAM 上有一个 20GB 的交换分区,因此空间充足。
当我使用 pm-hibernate 时,在休眠和恢复时,我都会收到一个小的 apci 错误,我无法读取,该错误在休眠和恢复时都会很快弹出。虽然休眠的工作原理是它似乎转储到磁盘并从磁盘恢复,但它似乎是一种睡眠状态,因为它以正常速率使用电池,而不是完全关闭并停止使用电池。
但是,当我使用通过以下方式安装的 Hibernate 时:
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:
- 合上盖子后进入休眠状态
- Ubuntu 17.04 hibernate 可以工作,但是 pm-hibernate 不可以
- 笔记本电脑锁定屏幕而不是休眠
- 如何让 Linux 默认优先使用 sudo pm-hibernate 而不是 systemctl hibernate?
- 睡眠模式消耗的电池电量与笔记本电脑使用时一样多
- 将默认休眠方法替换为 s2disk
我还在联想和 Arch 论坛上阅读了这些链接:
- https://forums.lenovo.com/t5/Linux-Discussion/X1-Carbon-Gen-6-cannot-enter-deep-sleep-S3-state-aka-Suspend-to/td-p/3998182/page/4
- https://forums.lenovo.com/t5/Linux-Discussion/X1-Gen6-Massive-battery-drain-in-suspend-No-deep-sleep-support/mp/3997789
- https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)
- https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate
我如何确保 lid-close 调用的 hibernate 是 hibernate 而不是 pm-hibernate?
更新
这仍然是一个问题,并且仍然使 Carbon X1 第六代在 ubuntu 上根本无法使用。任何可以解决这个问题并可能额外添加登录提示的解决方案可能几乎与 4 年前的 Windows 机器一样好…… ;)
答案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退出 nano 编辑器。
现在,注销系统,然后再次登录。您将看到休眠选项以及关机和挂起选项。
为方便您使用,以下链接为: https://fossbytes.com/enable-disable-hibernate-option-ubuntu-power-menu/
答案2
两种选择
第一个选项(第二个选项)是检查journalctl
与休眠相关的可能错误消息。如果第一个选项没有产生结果,第二个选项是创建一个包装器脚本,pm-hibernate
用“hibernate”替换。
创建包装器脚本
创建包装脚本可以hibernate
替换pm-hibernate
。
查找目录命令位于
在创建包装器脚本之前,您需要知道hibernate
和pm-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-hibernate
容易hibernate
:如何创建软链接或符号链接?
我喜欢使用进行编辑,但您可以用或或您喜欢的任何编辑器gedit
替换它:nano
vim
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