黑苹果启用休眠简单步骤 您所在的位置:网站首页 华硕b85网卡唤醒 黑苹果启用休眠简单步骤

黑苹果启用休眠简单步骤

2023-09-21 16:32| 来源: 网络整理| 查看: 265

概述

本文最后更新:2020年9月29日

使用笔记本电脑安装黑苹果的同学,因为省电刚需的关系几乎都需要经历排查各种问题开启休眠功能,本文将简单介绍黑苹果开启休眠需要调试的功能和文件。总的来说,休眠功能调试应该是黑苹果安装最后一个步骤,因为需要的前置条件很多且都是黑苹果必须的步骤,所以在进行休眠调试前,请确定已将其它大部分问题解决。

最后,因个人经验和知识量有限,如无法解决您的问题请见谅。

 

需要调试正常的功能 功能正常的 CPU 电源管理 正常驱动的核显(如果有) 运作正常的 NVRAM(无论原生或模拟) 定制好的 USB 端口 已解锁的 CFG Lock(MSR 0xE2写保护)

 

需要的 kext 和软件 Lilu.kext:目前黑苹果必备 WhateverGreen.kext:用于驱动核显/独显,解决驱动显卡相关功能(该 kext 依赖 Lilu.kext) HibernationFixup.kext:用于修复休眠睡死或者黑屏等问题(该 kext 依赖 Lilu.kext) CpuTscSync.kext:某些从休眠中唤醒后内核崩溃的问题,该 kext 可能有帮助(依赖 Lilu.kext)。 Hackintool.app,用于修改/查看目前的休眠模式 使用 AptioMemoryFix.efi 驱动系统 Clover 现在也可以使用 OpenCore 的 OpenRuntime.efi 搭配 OcQuirks.efi,具体参阅本文

 

系统功能调试顺序

以下每一步操作涉及的内容可能看起来不多,但操作起来全是问题,请耐心研究,执行每一步操作前请务必备份文件。

首先确认 BIOS 中的 CFG Lock(MSR 0xE2写保护)已解锁,这对于开启休眠可能不是必须的,因为在 OpenCore 中提供了一种基于 NVRAM 的休眠方式,同时,解锁 CFG 锁定对其它功能也有益。如果你的 BIOS 无法解锁这个选项,可参考这篇和这篇文章; 接下来 Clover 用户需确认是否正在使用 AptioMemoryFix.efi 驱动系统,此 efi 文件主要解决内存地址分配问题,具体可参阅此文中关于“内存修复驱动”和“关于 slide 值”部分; OpenCore 用户 0.5.7 版本以下检查 /EFI/OC/Drivers/ 下是否有 FwRuntimeServices.efi,以上版本(包括 0.5.7)用户检查是否有 OpenRuntime.efi; 完成上一步,重启正常后,给你的黑苹果选择合适的 SMBIOS 机型,完成注入三码; 三码正常重启应用后,检查 CPU 电源管理,一般来说,如果你的 CPU 正常睿频,并且 X86PlatformPlugin 和 X86PlatformShim 是正常加载状态,电源管理就是正常的(绝大部分第六/七/八/九代酷睿都不会遇到这个问题)。如果不正常,那你应该连睿频都会遇到问题,解决方法参考 CPUFriend.kext 使用方法以及ssdtPRGen.sh生成处理器变频配置; 接下来完成驱动核显(如果有),大部分 iMac 机型使用核显+独显进行编解码,完成后可用 VideoProc.app 查看驱动情况,并使用这个 5K 小工具测试性能是否正常;

下一步,测试和启用主板的 NVRAM,具体参考这里,无论使用原生或模拟都是可以的; NVRAM 重启正常应用后,应定制 USB 端口,注意把键盘/鼠标/蓝牙/RGB控制器设置为内置 USB 设备,否则可能出现休眠秒醒;

 

kext和软件安装&调试 Clover 用户把 Lilu.kext / WhateverGreen.kext / HibernationFixup.kext / VirtualSMC.kext 放到 /EFI/Clover/Kexts/Other/,OpenCore 用户放到 /EFI/OC/Kexts/,如果没有文件夹就创建一个。这个步骤应该大部分用户都无需操作,因为现在大部分下载到的配置好的 EFI 文件都包含这几个 kext(但 HibernationFixup.kext 大部分 EFI 都没有,如果你用的是别人配置的 EFI 请注意检查)。 接下来打开 Hackintool.app,切换到“电源”选项卡,查看目前的休眠模式:

如果有红色条目,可以点击下方的小螺丝刀进行“修复”。同时,也可以使用 终端.app 输入以下命令查看目前的休眠模式: pmset -g

其中 AC Power 指的是外接电源,Battery Power 指的是内置电池(笔者是台式机所以不显示电池方案)。 以上都完成后,可在 偏好设置 → 节能 开启以下选项: 如果可能,使硬盘进入睡眠; 唤醒以提供网络访问; 请勿启动电能小憩,因为这涉及到黑苹果设置 Darkwake 状态的问题(背后涉及 XNU 以及 Darwin,非常脑壳疼)。电能小憩的行为基本如下:在开启电能小憩的情况下,白苹果会周期性自动唤醒,进行邮件收取/更新或备份系统等其它操作,当这些操作完成后,白苹果会自动再次进入休眠。这个过程会让大部分的黑苹果系统 Game Over; 其它选项均可不启用。

 

选择休眠模式 下面是关于“休眠(Hibernate)”和“睡眠(Sleep)”的说明,在终端使用如下命令: pmset -g | grep hibernatemode 根据上面终端命令返回的值,可得出目前正在使用的休眠模式,具体来说有以下几种: 0 —旧休眠模式 休眠期间内存是通电状态,禁用安全睡眠,唤醒超快速,原是桌面端 Mac 的默认模式; 1 —睡眠模式 该模式会把内存中的数据写入硬盘,文件位置:/var/vm/sleepimage。macOS 在休眠时将完全关闭。因为需要读取先前保存在硬盘中的内存数据,该模式唤醒较慢,但理论上应该是最为省电的模式。注意该模式在每次休眠时会向硬盘写入和内存等大的文件,如果内存空间太大,日积月累下来还是挺恐怖的; 3 —休眠模式(2005年末后机型默认使用) 休眠过程中,内存保持通电状态,同时内存数据在进入睡眠模式之前同样要写入到硬盘,直到电池到达临界值,macOS 会自动进入休眠模式。基本上是 模式0 和 模式1 的结合,这个模式也叫 Safe Sleep,是移动版 Mac 的默认睡眠模式,该模式唤醒可快可慢,取决于休眠时长; 5 —和模式1基本一致 该模式是为了使用安全虚拟内存而设, System Preferences -> Security(系统设置 → 安全) 7 —和模式3基本一致 同样是为了安全虚拟内存而设 以上所有模式可通过以下终端命令设置,修改最后面的数字即可。台式机推荐模式0,笔记本推荐模式1或模式3,但网上也有笔记本案例说模式 23/25/57 等奇怪数字解决问题的,其中 25 是最多的。 sudo pmset -a hibernatemode 3 如果还想更进一步省电,可设置在休眠后断开网络连接: sudo pmset -b tcpkeepalive 0

 

排错方法 以上设置都完成后,点击  苹果图标 → 睡眠 即可进行测试,尽量让测试时间长一点,至少 5 分钟。 如果出现秒唤醒,或睡死等情况,使用以下命令查询日志原因: log show --start '2020-5-12 12:00:00' --end '2020-5-12 12:05:00' | grep 'Wake reason' 其中 start 时间和 end 时间分别对应开始和结束,可自行指定; 因为错误类型可能繁多,每个机型可能遇到不同问题,此命令提取出的 Wake reason 可直接复制到搜索引擎搜索有没有相关参考; 某些笔记本机型可能模式1、模式3、模式5、模式7都无法使用,可逐个测试; 如果显示以下内容,代表唤醒是由用户按下电源按钮造成的: Wake reason: PWRB (User)

 

使用 SSDT

这里推荐一个能解决大部分台式机睡眠问题(睡了即醒)的 SSDT,Credit @Sukka。

/* * Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20180427 (64-bit version)(RM) * Copyright (c) 2000 - 2018 Intel Corporation * * Disassembling to non-symbolic legacy ASL operators * * Disassembly of iASLH8qhUx.aml, Sat Jul 25 17:33:07 2020 * * Original Table Header: * Signature "SSDT" * Length 0x00000065 (101) * Revision 0x02 * Checksum 0x21 * OEM ID "OCLT" * OEM Table ID "GPRW" * OEM Revision 0x00000000 (0) * Compiler ID "INTL" * Compiler Version 0x20180427 (538444839) */ DefinitionBlock ("", "SSDT", 2, "OCLT", "GPRW", 0x00000000) { External (XPRW, MethodObj) // 2 Arguments (from opcode) Method (GPRW, 2, NotSerialized) { If (_OSI ("Darwin")) { If (LEqual (0x6D, Arg0)) { Return (Package (0x02) { 0x6D, Zero }) } If (LEqual (0x0D, Arg0)) { Return (Package (0x02) { 0x0D, Zero }) } } Return (XPRW (Arg0, Arg1)) } }

以上内容可使用 MaciASL.app 直接编译为 SSDT-GPRW.aml 文件,Clover 用户放到 /EFI/Clover/ACPI/Patched/ 目录,OpenCore 用户放到 /EFI/OC/ACPI/ ,并在 config.plist 中启用。

对于懒人…可以下载黑苹果星球整理好的包:

当前内容被隐藏,登陆后查看

已有12817次阅读

上面的 SSDT 需要配合 ACPI 重命名补丁使用,Clover 和 OpenCore 操作见下图:

代码如下:

Find* [HEX]: 47505257 02 Replace* [HEX]: 58505257 02 Comment: change GPRW to XPRW(Hibernation)

 

关闭 RTC 计划唤醒

如果你在 grep 唤醒原因的过程中,看到唤醒原因和 RTC 相关时,可尝试以下内核补丁:

代码如下:

Base: __ZN8AppleRTC18setupDateTimeAlarmEPK11RTCDateTime Comment: Disable RTC wake scheduling Count: 1 Enabled: True Identifier: com.apple.driver.AppleRTC Replace: C3

 

其它参考资料

最后提供几个参考资料。

Darkwake 状态详解,以及 pmset 命令操作(英文):链接

DSDT 修改方法:链接

通过 pmset 工具管理 macOS 睡眠:链接

彻底删除巨大的休眠镜像文件:链接

官方休眠设置文档:链接

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有