利用CFGLOCK.efi解锁MSR 0xE2
当我们利用OpenCore引导器安装macOS的时候,如果卡在了EndRandomSeed或者#LOG:EXITBS:START,那么大概率就是BIOS未禁用CFG LOCK锁导致的错误。
什么是CFG LOCK
CFG-Lock是BIOS中的一项设置,允许写入特定的寄存器(在本例中为MSR 0xE2)。默认情况下,大多数主板会锁定此变量,其中许多厂商甚至将选项直接隐藏在GUI中。而且,我们关心它的原因是macOS实际上要写入此变量,而不仅仅是macOS的一部分。包括内核和AppleIntelPowerManagement。它定义了CPU的电源状态(C-States),这就是为什么它对于macOS必不可少的原因。如果没有写入MSR 0xE2的能力,则将丢失所有或大部分CPU电源管理,并且系统无法启动。
在Clover中使用了2个补丁:KernelPM(针于AppleIntelPowerManagement.kext)和KernelXCPM(针于内核)。
在OpenCore中,使用了其他名称:AppleCpuPmCfgLock(针对AppleIntelPowerManagement.kext)和AppleXcpmCfgLock(针对内核)。这些修补程序解决了该问题,但是注册表仍然是只读的。为了确保本机CPU电源管理,CFG锁定位必须设置为0x0。
为此,必须修改固件以支持写入MSR 0xE2。与Clover和OpenCore修补程序相比,此方法更为可取,它可产生更大的系统稳定性,并且CPU电源管理与真实Mac更加相似。对于大多数不具备较高知识水平,需要专门工具甚至经过修改的grub的用户而言,通常为该任务建议的方法过于复杂。
CFGLock.efi的正确插入姿势
用户@Brumbaer 有一个名为CFGLock.efi的工具(请参阅此帖)。这是一个EFI应用程序,它必须被安装在EFI/OC/TOOLS目录下,同时它应该与OC软件包中包括的另一个工具VerifyEsrE2.efi一起使用,该工具报告CFG Lock的当前状态(锁定(locked)/解锁(unlocked))。
运行CFGLock.efi时,它会显示信息(找到CFG变量,它所在的varstore,当前读数并请求用户干预以将其从0x1更改为0x0,反之亦然)。然后,您必须重新启动。使用VerifyMsrE2.efi,我们可以检查更改是否成功。
可以通过直接在OC菜单中选择它们来运行这两个EFI应用程序,但是也可以通过安装OpenShell.efi工具来运行此Shell并从那里运行它们。OC和其他地方提供了有关处理OpenShell.efi的信息。更多的UEFI Shell的用法
获取
CFGLOCK.efi1
2# 下载CFGLock.efi到当前目录下
$ curl https://raw.sevencdn.com/daliansky/Hackintosh/master/Tools/CFGLOCK/CFGLock.efi -o CFGLock.efi将
CFGLock.efi复制到EFI/OC/TOOLS目录下在配置文件
config.plist中引入CFGLock.efi和VerifyEsrE2.efi
重启,在
OpenCore引导界面按空格键选择CFGLock,回车
OpenCore会自动载入CFGLock.efi并执行,它会自动找到CFG Lock的参数,本例中为:Offset: 0043,值为1,输入y回车,它会将值修改为0
重启后,选择
VerifyMsrE2,查看CFG LOCK的状态
最后一行显示
This firmware has UNLOCKED MSR 0xE2 register!,即为解锁状态
请于配置文件
config.plist中取消勾选AppleCpuCfgLock和AppleXcpmCfgLock
收工
注意事项
在执行过Reset NVRAM动作后可能需要重新执行上述操作,或通过VerifyMsrE2,查看CFG LOCK的状态
感谢名单
- Apple 的 macOS
- RehabMan维护的项目:OS-X-Clover-Laptop-Config Laptop-DSDT-Patch OS-X-USB-Inject-All等
- Acidanthera 维护的项目:OpenCorePkg lilu AirportBrcmFixup WhateverGreen VirtualSMC AppleALC BrcmPatchRAM MaciASL 等
- headkaze 提供的工具:hackintool PinConfigurator BrcmPatchRAM
- CloverHackyColor维护的项目:CloverBootloader CloverThemes
- 宪武整理的:P-little OC-little
- chris1111维护的项目:VoodooHDA Wireless USB Adapter Clover
- zxystd开发的itlwm IntelBluetoothFirmware
- lihaoyun6提供的工具:CPU-S macOS-Displays-icon SidecarPatcher
- sukka更新维护的从 Clover 到 OpenCore —— Clover 迁移 OpenCore 指南
- xzhih提供的工具:one-key-hidpi
- Bat.bat更新维护的精解OpenCore
- dortania 维护的 OpenCore Install Guide
- shuiyunxc 更新维护的OpenCore配置错误、故障与解决办法
- athlonreg更新维护的OpenCore 0.5+ 部件补丁 Common-patches-for-hackintosh
- github.com
- 码云 gitee.io
- 扣钉 coding.net
参考及引用:
- https://deviwiki.com/wiki/Dell
- https://deviwiki.com/wiki/Dell_Wireless_1820A_(DW1820A)
- Hervé 更新的Broadcom 4350:https://osxlatitude.com/forums/topic/12169-bcm4350-cards-registry-of-cardslaptops-interop/
- Hervé 更新的DW1820A支持机型列表:https://osxlatitude.com/forums/topic/11322-broadcom-bcm4350-cards-under-high-sierramojave/
- nickhx 提供的蓝牙驱动:https://osxlatitude.com/forums/topic/11540-dw1820a-for-7490-help/?do=findComment&comment=92833
- xjn819: 使用OpenCore引导黑苹果 300系列主板正确使用AptioMemoryFix.efi的姿势(重写版)
- insanelymac.com
- tonymacx86.com
- 远景论坛
- applelife.ru
- olarila.com


