利用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.ef
i时,它会显示信息(找到CFG变量,它所在的varstore,当前读数并请求用户干预以将其从0x1更改为0x0,反之亦然)。然后,您必须重新启动。使用VerifyMsrE2.efi
,我们可以检查更改是否成功。
可以通过直接在OC菜单中选择它们来运行这两个EFI应用程序,但是也可以通过安装OpenShell.efi
工具来运行此Shell并从那里运行它们。OC和其他地方提供了有关处理OpenShell.efi
的信息。更多的UEFI Shell的用法
获取
CFGLOCK.efi
1
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