刚刚在新的 Dell XPS 15 (9570) 上安装了全新的 Kubuntu 18.04。磁盘已加密,安全启动已启用(这是否有区别?我读过的一些东西似乎表明可能会有区别)。
我正在努力让它正确暂停,如果我关上盖子并把它留在那里,它只会耗尽电池。
我开始研究它,找到了一些可以尝试的东西,我开始尝试一些事情这里cat /sys/power/mem_sleep
并且对于我来说,输出的结果是[s2idle] deep
我假设它正在耗尽电池,因为它没有处于深度睡眠状态?
我尝试改为深度睡眠(echo deep > /sys/power/mem_sleep
),这确实可以改变它,但是当尝试使用时pm-suspend
,屏幕变暗,但大约 15 秒后再次唤醒。
检查后journalctl -xe
我看到了这一点:
...
Oct 06 19:54:57 xps kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 06 19:54:57 xps kernel: nouveau 0000:01:00.0: DRM: failed to idle channel 1 [DRM]
Oct 06 19:54:57 xps kernel: pci_pm_suspend(): nouveau_pmops_suspend+0x0/0x80 [nouveau] returns -16
Oct 06 19:54:57 xps kernel: dpm_run_callback(): pci_pm_suspend+0x0/0x150 returns -16
Oct 06 19:54:57 xps kernel: PM: Device 0000:01:00.0 failed to suspend async: error -16
Oct 06 19:54:57 xps kernel: do_IRQ: 0.35 No irq handler for vector
Oct 06 19:54:57 xps kernel: PM: Some devices failed to suspend, or early wake event detected
Oct 06 19:54:57 xps kernel: OOM killer enabled.
Oct 06 19:54:57 xps kernel: Restarting tasks ... done.
Oct 06 19:54:57 xps kernel: [drm] RC6 on
...
Oct 06 19:54:57 xps systemd[1]: systemd-suspend.service: Main process exited, code=exited, status=1/FAILURE
Oct 06 19:54:57 xps systemd[1]: systemd-suspend.service: Failed with result 'exit-code'.
Oct 06 19:54:57 xps systemd[1]: Failed to start Suspend.
...
表明 PCI 设备0000:01:00.0
导致挂起失败,从外观上看这是我的 GPU:
$ lspci -s 0000:01:00.0
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Ti Mobile] (rev a1)
但我不明白:a) 为什么 GPU 会导致睡眠失败?b) 如何阻止它导致睡眠失败?
我尝试查看,/proc/acpi/wakeup
但没看到它:
$ cat /proc/acpi/wakeup | grep enabled
LID0 S3 *enabled platform:PNP0C0D:00
PBTN S3 *enabled platform:PNP0C0C:00
最初,还有一个 XHC 条目设置为启用,但我禁用了它 - 但没有任何区别 :(
不确定下一步该尝试什么?
答案1
我还遇到了另一个问题,当我注销时,系统会挂起并锁定一段时间(比如一两分钟),但最终会恢复。启动和关机也很慢。关闭时,它会停留在闪烁的光标上一段时间,然后最终关闭。
在调查该问题时,它修复了这个问题。我遇到了大量的崩溃转储journalctl
,并搜索了出现的各种错误,有人建议尝试使用nomodeset
内核参数启动,看看是否有区别。这解决了问题,然后我尝试设置/sys/power/mem_sleep
为深度,它工作得很好(在夜间测试中损失了 3% 的电池电量)。
通过搜索,我发现 Ubuntu 18.04 似乎仍然需要nomodeset
NVIDIA GPU。我不明白为什么或是什么原因造成的,但它似乎与专有的 NVIDIA 驱动程序有关。我应用的修复对我有用,但我不知道它是否“正确”。
为了确保这些设置(nomodeset
和深度睡眠)在重启后仍然存在,我编辑了我的 grub 配置(/etc/default/grub
)并更改
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
到
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0 mem_sleep_default=deep"
我读完后nouveau.modeset=0
用了nomodeset
这询问 Ubuntu 线程和这Reddit 线程建议使用具有双 GPU 的 nouveau 来实现这一点。