CFG LOCK修改的原因:1)可以使用原生的apple电源管理;2)顺利安装。一般主板默认的cfglock都是关闭的,而且有些主板的bios中隐藏了cfglock的开关,需要手动修改。

目前网络上主要是三种方案,实际上还是两种,一种是RU.EFI方式(主要针对insyde bios ),另一种就是利用定制的grub.efi的setup_var来修改。对于insyde bios其实用grub的方式也可以修改,但是这里面涉及到一个问题,就是目前网上大面积查询得到的setup_var(包括setup_var2和setup_var_3)都把一个name固定了(也就是固定为了Setup,导致一些主板修改的时候总是提示修改失败。)

其实我在修改JW主板的时候也是发现一直无法修改成功,提示错误。换了ru.efi结果黑屏(没找到原因)

这个详细的文章可以参阅:【黑苹果解锁cfg lock新姿势—-通用教程。可修改bios隐藏设置。】

https://www.bilibili.com/read/cv10082455/

备忘一下修改的过程

1)软件1:bios万能提取软件 BIOS_Backup_TooKit(网上也有说需要通过 Intel CSME System Tools 来提取才能正确,我自己测试了一下,用万能的和intel的都能提取并且都能查询到cfg lock的偏移值,intel的需要对应平台版本,H510的用15.0),软件的目的是提取当前的bios文件(rom或者bin)

ps:Intel CSME System Tools提取bios命令:FPTw.exe -bios -d biosreg.bin (或FPTw64.exe -bios -d biosreg.bin)

2)软件2:UEFITool,软件的目的是将上面提取的rom(或bin)文件拖入后进行关键词text文本查找cfg lock,获得cfg lock相关的数据,双击,右键extract body,将该数据提取(一般提取为efi文件)

3)软件3:IRFExtractor,软件的目的是将上面的efi文件进行解压,获得一个可以查看的文本文件(正常拖入提取后会提示UEFI绿色),这个文件就是查找cfg lock偏移量的关键。

4)按照上面操作后,打开最后获得的文本文件,查找CFG LOCK关键词,一般可以获得这样的信息:

0x3079C ? ? ? ? One Of: CFG Lock, VarStoreInfo (VarOffset/VarName): 0x43, VarStore: 0x2, QuestionId: 0x21B, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 94 05 95 05 1B 02 02 00 43 00 10 10 00 01 00}

这里面两个参数很重要,一个是0x43,这个是cfg lock的偏移量,修改就是来修改这个数据的值(0x1为锁定,0x0为关闭锁定,解锁的目的就是将这个参数修改为0x0),另外一个参数就是0x2。这个参数表示cfg lock存储在哪个上面(这个0x2为地址,其对应一个Name,之所以用grub修改出错就是因为这个地方的Name固定为了Setup,而这个Setup往往不一定是绝对的)

那么同一个文本文件中,在最上方查找可以发现这样的一行:

0x2A491 ? ? VarStore: VarStoreId: 0x2 [B08F97FF-E6E8-4193-A997-5E9E9B0ADB32], Size: 0x3D6, Name: CpuSetup {24 …

看到这行的时候,就可以知道这个Name其实不是Setup了,而是CpuSetup。这个区别就是遇到无法修改的原因

5)最后一个软件 \EFI\BOOT\bootx64.efi,这个文件来源:https://github.com/XDleader555/grub_setup_var/releases ,这个一个旧版本的grub_setup,这个可以命令中自定义Name,而不是指定为Setup这个定制。这个下载下来的文件名称为:grubx64.efi文件,重命名为bootx64.efi后就可以。(或者也可以用一个efi shell启动后运行这个grubx64.efi)。找个U盘,放入这样文件结构的efi后,U盘采用UEFI模式启动,进入grub命令符,输入下面的命令:

setup_var CpuSetup 0x43 0x00

其中CpuSetup是对应的Name,0x43是查询到的CFG LOCK的偏移量,0x00为修改后的值(1为锁定,0为取消锁定)

结束!