使用ControlMsrE2解锁BIOS的CFG Lock选项

/ 0评 / 0

关于

在尝试使用黑苹果的过程中,发现CFG Lock必须解锁,不解锁会卡在启动阶段,具体手段和形式非常多样,但总体来看都是修改UEFI固件当中的Variables当中被隐藏的CFG Lock选项值,总体来说是一种Hack BIOS的手段,只不过各种方法不同而已。有的是使用RU.efi来手工修改,有的是使用CFGLock.efi工具来修改,目的没有区别,只是工具区别。

这些工具总体都是EFI Shell下运行的,需要在有EFI Shell的环境中使用。

OpenCore文档中的方案

中文互联网上绝大多数关于解锁CFG Lock的文章都是大同小异,一般使用UEFITool查找BIOS文件当中的配置块,然后解压出来确认CFG Lock位置偏移量,最后使用RU.efi在UEFI Shell环境中修改。这样修改的好处是比较清晰,因为每个厂家的每个型号,设置每个版本的BIOS对这个选项可能对有不同的便宜量,如果一味的照猫画虎,可能导致修改了错误的地址,引起电脑变砖,如果主板没有内置的BIOS还原功能,那就只能上编程器或者送售后解决,总体来看难度相对较大,门槛相对较高。

OpenCore官方文档对CFG Lock有详细的描述,对于解锁方案并非使用纯人工方案修改,而是使用自动方案修改,操作更加简单,理论上只要UEFI处于不被保护的状态,基本上就能解锁成功,同时在OpenCore官方文档中列出,相对来说是比较推荐的,但这种方案在中文互联网上操作过程比较少,至少我在漫长的爬文档当中没有找到太详细的说明。

OpenCore文档中介绍总体来说是Modified GRUB Shell这个软件来进行解锁,一般步骤是在OC的Tools文件夹中置入OpenShell.efi作为命令行环境,同时置入Modified GRUB Shell该软件,在OC启动后进入Shell环境,手动命令行调用该软件进行解锁。

在顺着链接一步步翻文档的时候,发现Modified GRUB Shell这个软件的github说的很清晰,该软件已被重写成更加简单的工具:setup_var.efi(当然该工具也很复杂,需要手工操作)

Deprecation: This tool have been rewritten as a standalone UEFI application for more clear error results, ability to be automated and aarch64 support.

在尝试之后发现仍然需要人工找到CFG Lock的位置,并手动敲命令修改,并不是不能修改,而是实在觉得比较复杂,担心大于方便,于是继续寻找更加简便的方案。

OpenCore工具ControlMsrE2的方案

在使用UEFI Shell检查CFG Lock状态的时候,发现OC官方提供了这样一个工具:ControlMsrE2.efi,并且近期更新了可以一键解锁CFG Lock的功能,爬了一下github的记录,发现似乎是2024年才重构更新的该功能,那么太好了,直接使用它来进行解锁。

同时该工具是之前网上教程比较多的CFGLock.efi工具的升级版,二者同一个作者,对比下来ControlMsrE2功能更加丰富,提供unlock/lock选择,同时直接运行即可达到验证功能,即替代VerifyMsrE2.efi工具。所以ControlMsrE2 = CFGLock.efi + VerifyMsrE2.efi

前置条件

关闭UEFI Variable Protection

在使用UEFI Shell检查CFG Lock状态的时候,尝试过RU手动解锁,CFGLock.efi 自动解锁等方案,但是均报错,且没有明确的报错提示,只告诉我Write Fail。一般来说到这里基本就放弃了,转而使用OC的相关选项来解决问题。

但是经过前文所述爬文档过程,决定尝试一下ControlMsrE2.efi,尝试结果依然失败。但在使用OpenCore文档中所述的升级工具setup_var.efi的时候,给出了比较有价值的报错提示信息

Error writing variable:
Error while setting content of variable CpuSetup with code SECURITY_VIOLATION

这个信息就比较有价值了,关键在于SECURITY_VIOLATION,基本可以确认是安全配置相关的问题,在BIOS中需要关闭如下选项(以ASUS主板为例)

UEFI Variables Protection:
Go to Setup > Advanced > UEFI Variables Protection section of your BIOS
Disable Password protection of Runtime Variables

华硕系列主板截图如下

file

进行修改

Step1

将ControlMsrE2.efi放入OC的Tools文件夹,并使用OC配置器进行更新,截图如下

file

file

Step2

重启到OC界面按空格键进入OpenShell菜单,按照一般的命令定位到ControlMsrE2.efi所在文件夹

file

file

Step3

首先直接运行ControlMsrE2.efi检查CFG Lock状态,目前已经解锁处于UNLOCK状态,如果需要解锁则是处于LOCK状态

file

然后直接使用该命令进行解锁即可

ControlMsrE2.efi unlock

file

解锁完毕会有提示,这里就不截图了,重启之后再次进入BIOS进行测试,应该是已经解锁成功。

相关工具下载

OpenCore最新版:https://github.com/acidanthera/OpenCorePkg

OpenCore CFG Lock说明文档:https://dortania.github.io/OpenCore-Post-Install/misc/msr-lock.html#what-is-cfg-lock

Modify GRUB Shell: https://github.com/datasone/grub-mod-setup_var/releases

Setup_var.efi: https://github.com/datasone/setup_var.efi

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据