问题描述
我已经使用 Ubuntu 大约五年了,但我仍然无法让它在我想暂停的时候暂停。我可以编写一个风暴,以许多其他方式破解机器,但是当我试图让它挂起或调试挂起时,我会惨败。
我需要帮助。
我从哪里开始发现问题?我该怎么做才能修复它?我对此给予了赏金,因为我实际上已经为这个问题浪费了几个小时的时间,而且一直让我的电脑开着是很糟糕的。
症状:
-
按下挂起使我的计算机进入一个光标闪烁的状态,风扇正在运行,似乎 HD 已关闭(我认为),我无法将其从该状态恢复(缺少硬重启)。
-
可能相关:我的风扇即使在关机后仍保持开机状态,即便如此,我必须按住电源按钮五秒钟才能再次启动它。
-
我不知道要查看哪些日志来调试问题,而且我想他们无论如何都会在重新启动时遭到核弹。
请,请帮助。这让我完全发疯,我已经和它一起生活了一年多。
最佳方法
从 https://wiki.ubuntu.com/UnderstandingSuspend
-
最大的问题是图形硬件
-
尝试在没有受限设备的情况下挂起(nvidia、fglrx)
-
内核不知道如何处理图形设备
-
BIOS 知道如何恢复图形状态
-
通过 16 位分段模式,C000:xxxx 包含可见的 64k 视频 ROM。
-
在 C000:0003 开始执行,通常是 re-POSTs 视频 BIOS (/usr/sbin/vbetool post)
-
在 64 位模式下更困难,因为需要模拟 16 位调用。
-
一些内存在 3-4G 范围内,在仿真时需要重新映射以避免碰到映射在同一空间中的内核。 o 视频 BIOS 可能已将 POST 代码分页到 C000 窗口之外 o nvidia BIOS 重写 ROM 以返回停止 re-POSTing 尝试从控制台挂起(通过 /etc/acpi/sleep.sh)
-
-
确保您已退出 Xorg(或使用 “force” 参数运行 sleep.sh)
-
如果视频 BIOS 没有处于正常状态,返回 Xorg 可能会挂起硬件
-
在简历上测试大写锁定(如果没有大写锁定,内核挂起)
-
如果背光没有恢复,可能是视频 BIOS 没有重新初始化
-
如果屏幕是空白的,但有背光,请尝试按 Enter 键或在虚拟终端之间切换
-
尝试 single-user 模式(通过将 “single” 附加到 grub 内核引导选项)
-
有关操作的详细信息,请尝试 bash -x /etc/acpi/sleep.sh >/root/sleep.log 2>&1
-
查看与 /usr/share/acpi-support/*.config 中的设置匹配的 dmidecode 信息
-
如果 single-user 模式控制台挂起或恢复失败
-
PM 跟踪 (echo “1” > /sys/power/pm_trace) 会将设备哈希写入系统计时器
-
尝试暂停
-
失败后,在重新启动时,检查 dmesg 输出中的 “device hash” 条目以跟踪在恢复期间挂起系统的设备。
-
请注意,这将重置系统时钟,并且 fsck 会崩溃(“已经 31337 天没有 fsck”)。考虑 tune2fs -c 0 /dev/your/filesystems。
-
次佳方法
根据您的描述,听起来好像您的 ACPI 工作不正常,或者内核驱动程序正在阻止完全挂起。第二个链接显示了如何处理此类问题。
第三种方法
症状:
-
按下挂起使我的计算机进入一个光标闪烁的状态,风扇正在运行,似乎 HD 已关闭(我认为),我无法将其从该状态恢复(缺少硬重启)。
-
可能相关:我的风扇即使在关机后仍保持开机状态,即便如此,我必须按住电源按钮五秒钟才能再次启动它。
-
我不知道要查看哪些日志来调试问题,而且我想他们无论如何都会在重新启动时遭到核弹。
对于许多 Linux 问题,我访问的站点是 Arch Linux。以下是与您类似的关于 suspend/resume problems 的内容:
从挂起瞬间唤醒
对于某些带有 LynxPoint 和 LynxPoint-LP 芯片组的 Intel Haswell 系统,会报告挂起后的瞬时唤醒。它们与错误的 BIOS ACPI 实现以及 xhci_hcd
模块在引导期间如何解释它相关联。作为 work-around 报告的受影响系统被内核 case-by-case 添加到黑名单(名为 XHCI_SPURIOUS_WAKEUP
)。 [ 2 ]
例如,如果在挂起期间插入 USB 设备并启用 ACPI 唤醒触发器,则可能会发生瞬时恢复。对于这样的系统,一个可行的 work-around,如果它还没有在黑名单上,就是禁用唤醒触发器。通过 USB 禁用唤醒的示例如下所述。 [ 3 ]
查看当前配置:
$ cat /proc/acpi/wakeup
Device S-state Status Sysfs node
...
EHC1 S3 *enabled pci:0000:00:1d.0
EHC2 S3 *enabled pci:0000:00:1a.0
XHC S3 *enabled pci:0000:00:14.0
…
相关设备为 EHC1
、 EHC2
和 XHC
(用于 USB 3.0)。要切换它们的状态,您必须以 root 身份将设备名称回显到文件中。
# echo EHC1 > /proc/acpi/wakeup
# echo EHC2 > /proc/acpi/wakeup
# echo XHC > /proc/acpi/wakeup
这应该会导致暂停再次工作。但是,此设置只是临时的,必须在每次重新启动时进行设置。要自动执行此操作,请查看 systemd#Writing unit files 。有关可能的解决方案和更多信息,请参阅 BBS thread。
上面关于 Suspend/Resume 的整篇 Arch Linux 文章对于许多领域来说都是很好的参考:
1 Low level interfaces
1.1 kernel (swsusp)
1.2 uswsusp
2 High level interfaces
2.1 systemd
3 Hibernation
3.1 About swap partition/file size
3.2 Required kernel parameters
3.2.1 Hibernation into swap file
3.3 Configure the initramfs
4 Troubleshooting
4.1 ACPI_OS_NAME
4.2 VAIO Users
4.3 Suspend/hibernate doesn't work, or not consistently
4.4 Wake-on-LAN
4.5 Instantaneous wakeups from suspend