如何调试暂停?


29

我已经使用Ubuntu大约五年了,但我仍然无法让它挂起。我可以编写一个风暴,以许多其他方式来入侵计算机,这很令人烦恼,然而,当我尝试使其挂起或调试挂起时,我却惨败了。

我需要帮助。

我从哪里开始发现问题?我该如何解决?我为此悬赏,因为我实际上已经失去了这个问题的一生,而一直将计算机保持打开状态非常糟糕。

症状:

  • 按下暂停会使我的计算机进入光标闪烁状态,风扇正在运行,似乎HD已关闭(我认为),并且我无法采取任何措施将其从该状态恢复(硬重启)。
  • 可能相关:即使关机,我的风扇仍会保持打开状态,即使如此,我也必须按下电源按钮五秒钟,然后才能重新启动它。
  • 我不知道该看什么日志来调试问题,而且我想无论如何它们在重新启动时都会变得无用。

请,请帮助。这让我完全疯了,我已经忍受了一年多。


你有运气吗?我个人坚持初始化图形硬件。如果有足够的时间,我可能可以从中编程出自己的方式……但是,采用某种直接解决问题的方法会更加顺畅。
亨里克

是的,没有运气。显然没有调试挂起的方法,这有点令人震惊。
mlissner

1
您如何暂停? 您正在从命令行运行pm-suspend吗?您是否在键盘上使用了暂停键?您是否正在拨打acpi(例如/etc/acpi/sleep.sh或/etc/acpi/sleepbtn.sh)?
M. Tibbits,

1
赏金猎人:我主要是在寻找一般的调试方法,即信息收集,以便使用systemd安装最新的Ubuntu。我希望我们可以将这个问题用作经验不足的用户对广泛中止问题的规范重复。
David Foerster,

2
@pbhj:无论哪种方式,都需要对问题进行适当的诊断,作为迈向解决方案的第一步。
David Foerster '18

Answers:


22

来自https://wiki.ubuntu.com/UnderstandingSuspend

  • 最大的问题是图形硬件
  • 尝试在没有受限设备的情况下暂停(nvidia,fglrx)
  • 内核不知道如何处理图形设备
  • BIOS知道如何还原图形状态
    • 通过16位分段模式,C000:xxxx包含可见的64k视频ROM。
    • 从C000:0003开始执行,通常会重新发布视频BIOS(/ usr / sbin / vbetool发布)
      • 在64位模式下更加困难,因为需要模拟16位调用。
      • 一些内存在3-4G范围内,在仿真时需要重新映射以避免撞到映射在同一空间中的内核。o视频BIOS可能已在C000窗口之外分页了POST代码o NVIDIA BIOS重写了ROM以仅返回以停止重新发布,请尝试从控制台挂起(通过/etc/acpi/sleep.sh)
    • 确保您已退出Xorg(或使用“ force”参数运行sleep.sh)
    • 如果视频BIOS未保持正常状态,则返回Xorg可能会挂起硬件
    • 测试简历上的大写锁定(如果没有大写锁定,则挂起内核)
    • 如果背光灯没有重新亮起,则可能是视频BIOS没有重新初始化
    • 如果屏幕为空白,但有背光,请尝试按Enter键或在虚拟终端之间切换
    • 在单用户模式下尝试(通过在grub内核启动选项后附加“单”)
    • 有关操作的详细信息,请尝试bash -x /etc/acpi/sleep.sh> /root/sleep.log 2>&1
    • 查看与/usr/share/acpi-support/*.config中的设置匹配的dmidecode信息
    • 如果单用户模式控制台挂起或恢复失败
    • PM跟踪(回显“ 1”> / sys / power / pm_trace),它将设备哈希值写入系统计时器
    • 尝试暂停
    • 失败后,重新启动后,请在dmesg输出中检查“设备哈希”条目,以跟踪在恢复过程中挂起系统的设备。
    • 请注意,这将重置系统时钟,并且fsck会出现异常(“在没有fsck的情况下已经消失了31337天”)。考虑tune2fs -c 0 / dev / your / filesystems。

2
如何关闭受限设备?
Owen

1
挂起失败时,是否有任何指向正常工作脚本的链接选中一个框?...这类问题是Linux的祸根并阻止了大规模使用...
Scott Stensland

4

您可以在此处此处找到很多指南/建议。

从您的描述中,听起来好像您的ACPI工作不正常,或者内核驱动程序阻止了完全挂起。第二个链接显示了如何处理此类问题。


2
我仔细阅读了这些内容,但对于我的问题,它们缺乏实际有用的信息。需要更多帮助和更好的细节。我为这个问题创造了赏金。
mlissner'1

4
错误的答案-只是链接。Stack *网站的重点是为所有问题提供一个理想去处,而不是让用户无休止地追逐鹅,或者说“只是谷歌搜索”。请在问题中插入答案,并根据mlissner的评论进行更新。
亨里克

谢谢:有时候阅读原始主页很有用!
abu_bua '18

4

症状:

  • 按下暂停会使我的计算机进入光标闪烁状态,风扇正在运行,似乎HD已关闭(我认为),并且我无法采取任何措施将其从该状态恢复(硬重启)。
  • 可能相关:即使关机,我的风扇仍会保持打开状态,即使如此,我也必须按下电源按钮五秒钟,然后才能重新启动它。
  • 我不知道该看什么日志来调试问题,而且我想无论如何它们在重新启动时都会变得无用。

我到站点上遇到的许多Linux问题是Arch Linux。这是关于与您类似的挂起/恢复问题的信息

从挂起瞬间唤醒

对于某些具有LynxPoint和LynxPoint-LP芯片组的Intel Haswell系统,报告了挂起后的瞬时唤醒。它们链接到错误的BIOS ACPI实施以及xhci_hcd模块在引导过程中的解释方式。作为一种变通方法XHCI_SPURIOUS_WAKEUP,内核会逐个将受影响的系统添加到黑名单(名为)。[ 2 ]

例如,如果在挂起期间插入USB设备并且启用了ACPI唤醒触发器,则可能会发生瞬时恢复。如果该系统尚未列入黑名单,则可行的解决方法是禁用唤醒触发器。禁用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

...

相关的设备EHC1EHC2以及XHC(对于USB 3.0)。要切换它们的状态,您必须将设备名称作为root回显到文件中。

# echo EHC1 > /proc/acpi/wakeup
# echo EHC2 > /proc/acpi/wakeup
# echo XHC > /proc/acpi/wakeup

这将导致暂停工作再次发生。但是,此设置只是临时的,必须在每次重新启动时进行设置。要使其自动化,请查看systemd#Writing单位文件。有关可能的解决方案和更多信息,请参见BBS线程


上面有关“挂起/继续”的整个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

看起来不错!我会再等一两天,让其他人有机会回答。也许有人会受到您的启发。:-)
David Foerster

@DavidFoerster谢谢。回答一个已有8年历史的问题具有挑战性。我今晚将要添加的NVMe M.2 PCIe SSD也存在暂停/恢复问题。这些类型的SSD在2010年不存在,需要特殊的grub内核参数。
WinEunuuchs2Unix

我一直在寻找针对特定挂起问题的解决方案,而不是为使用systemd的最新Ubuntu安装提供一般调试方法的解决方案。
David Foerster,

@DavidFoerster在这种情况下,我将按原样回答:)
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.