问题
几个月前,我在一台闲置的 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 秒。
只要你能忍受这个问题,下面就是解决方案:
打开终端(如果尚未打开)
创建一个名为的小文件
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
然后保存文件并退出文本编辑器。
创建一个
.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
保存文件并退出。
重启
如果您希望稍后撤消此行为,只需删除该.service
文件并重新启动即可。
还请注意,唤醒后会有 10~20 分钟的延迟才会出现锁屏。这就是现状。唯一的解决办法就是永远不要让机器进入睡眠状态。