笔记本电脑睡眠后系统崩溃

笔记本电脑睡眠后系统崩溃

问题

几个月前,我在一台闲置的 Mac Book Pro(13 英寸,2016 年底型号)上安装了 Ubuntu。除了计算机睡眠时,安装大部分时间都运行正常。唤醒后,我无法打开任何应用程序,并出现错误:

Failed to launch <application_name>
Failed to execute the child process "/bin/sh" (Input/output error)

随后应用程序图标消失,最终系统崩溃,需要硬重置。重置前,内核会发送类似以下内容的垃圾邮件:

EXT4-fs error (device nvme0n1p2): __ext4_find_entry:1663: inode #12583047: comm gmain: reading directory lblock 0

我尝试修复此问题

根据上述输出,我怀疑有两个原因:文件系统损坏或驱动器故障。

启动实时 USB 后,我fsck在根文件系统上运行,没有发现任何问题。我还运行了smartctl表明驱动器运行正常。我还执行了帖子已通过。

在上述方法无效后,我偶然发现帖子,似乎与我遇到的情况类似。问题的原因是 APST 问题,可以通过修改 grub 文件中的某些设置来解决。尝试帖子中概述的两种解决方案后,问题仍然存在。

系统信息

笔记本电脑型号:2016 年末 13 英寸 MacBook Pro

Ubuntu 版本:

内核版本:

日志

相关日志文件很难获得,因为一旦计算机从睡眠状态唤醒,系统就会进入只读模式,即一旦我重新启动系统,错误消息就不可用(如果有解决方法,我很乐意尝试并更新帖子)。

我所能做的就是运行程序,dmesg -w查看计算机从睡眠状态唤醒后运行的短时间内终端上显示的结果。我可以从该输出中拍摄以下图片。

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

如果我能提供更多输出,请告诉我。

我对 Linux 还比较陌生,如能得到任何帮助我将不胜感激。到目前为止,我已经学到了很多东西,但对于下一步该怎么做,我有点不确定。

答案1

通常,MacBook 通过 UEFI 监视器将 NVMe 存储置于睡眠状态。如果没有向驱动器发出重新启动的命令,则任何尚未在内存中的内容都无法访问。这也是为什么没有写入日志的原因。话虽如此,但有一个针对您的特定 MacBook 的丑陋黑客解决方法可以让机器恢复。

但有一个警告:从睡眠状态唤醒需要 10~20 秒,而不是预期的 0~1 秒。

只要你能忍受这个问题,下面就是解决方案:

  1. 打开终端(如果尚未打开)

  2. 创建一个名为的小文件wakey-wakey.sh

    sudo {editor of choice} /use/sbin/wakey-wakey.sh
    

    笔记:请务必{editor of choice}用您选择的编辑器进行替换。

    将以下内容粘贴到新文件中:

    #!/bin/bash
    /bin/echo 0 > /sys/bus/pci/devices/0000\:01\:00.0/d3cold_allowed
    

    然后保存文件并退出文本编辑器。

  3. 创建一个.service文件,每次系统从睡眠状态唤醒时都会调用该文件:

    sudo {editor of choice} /etc/systemd/system/wake_storage.service
    

    将以下内容粘贴到新文件中:

    # Service to reset sleep boolean on Apple MacBook Pro internal storage devices
    
    [Unit]
    Description=Disable NVMe from hard power down on sleep
    
    [Service]
    ExecStart=/sbin/wakey-wakey.sh
    Type=oneshot
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    

    保存文件并退出。

  4. 重启

如果您希望稍后撤消此行为,只需删除该.service文件并重新启动即可。

还请注意,唤醒后会有 10~20 分钟的延迟才会出现锁屏。这就是现状。唯一的解决办法就是永远不要让机器进入睡眠状态。

相关内容