解锁CFG Lock


张登友,张登友的博客,张登友的网站——

上一篇解释了cfg lock的作用,但没有详细的解锁教程,今天补全;此篇参考自远景论坛大神@87zrjojo

友情提醒:

  1. 刷机有风险,搞机须谨慎!
  2. 刷机有风险,搞机须谨慎!
  3. 刷机有风险,搞机须谨慎!

失败有可能造成电脑无法开机,没有救砖的技术请不要尝试,造成损坏博主不承担任何责任。

================================下面有秘诀=============================

据说微星主板可以使用快捷键开启隐藏选项:(未测试) 在bios界面按 右CTRL+右SHIFT+左ALT+F2(注意顺序),如果不能开启隐藏选项请参考本文章!

解锁MSR 0xE2、BIOS Lock等隐藏选项新姿势,还黑果原生体验(附刷AMI BIOS教程)

为什么要解锁

  1. MSR 0xE2。MSR全称是Model Specific Register,特定模块寄存器,属于非标准寄存器,用来控制CPU的工作环境和读取工作状态,比如电压,温度,功耗等非程序性能指标。苹果系统的电源管理、CPU的P-state、C-state就是放在MSR寄存器里的。大多数UEFI主板厂家,锁定了MSR寄存器的第15位为只读,也就是MSR 0xE2 Locking(BIOS 中叫CFG Lock)。MSR 0xE2被锁定为只读后,AppleIntelCPUPowernamegement一旦去写入数据,马上就核心崩溃。有些主板上有选项“CFG Lock”,其说明内容为”关闭或开启MSR 0xE2″,可以手动开关。当你需要使用黑苹果时,则必须解锁MSR 0xE2,否则无法使用原生电源管理。
  2. DVMT-Pre-Allocted。这个不用多说了,安装黑苹果可能都会遇到,一般为核显dvmt小于64m则驱动显卡时会panic报错,报错位置一般为核显framebuffer。可以通过Cloverhttp://ruexe.blogspot.com(需要科学上网)

下面是所有需要准备的工具:

  1. FWPTW64.exe AMI BIOS通刷的工具
    下载地址:https://comsystem-tlt.ru/obzori/me-txe-region
  2. RU UEFI或DOS图形界面操作BIOS隐藏选项的工具
    下载地址:http://ruexe.blogspot.com(翻墙才能打开)
  3. AMIBCP.exe 打开AMI BIOS 修改的工具(这个在官网中下载不到,希望有渠道的朋友提供下最新的版本)
  4. AFUWIN64.exe AIM官方刷BIOS工具(只支持官方未经修改的BIOS刷入)
    下载地址:https://ami.com/en/products/firmware-tools-and-utilities/bios-uefi-utilities/
  5. UEFITool 查找BIOS中相关变量(字串)的工具:
    下载地址:https://github.com/LongSoft/UEFITool/releases
  6. IRFExtractor.exe 解释UEFI Tool二进制成文本的工具
    下载地址:https://github.com/LongSoft/Universal-IFR-Extractor/releases
  7. CloverBootloader 黑果引导
    下载地址:https://github.com/CloverHackyColor/CloverBootloader/releases

解锁CFG Lock正式开始:

提取主板BIOS

可以从官网下载最新的BIOS文件,也可以通过FPTW64.exe来备份,但强烈建议不管任何情况都先通过FPTW64.exe进行备份,以免因刷BIOS造成不良后果。(我直接下载了微星官网提供的最新BIOS文件)

管理员权限运行下列命令:FPTW64.exe -D 备份文件名.rom -bios

提取BIOS信息

这一步,我们需要使用UEFITool这个工具,该工具有Mac版,Win版和Linux版,在这里我以Windows版为例。
打开UEFITool软件,菜单栏选择File>Open image file…

选择第一步提取出来的BIOS文件,得到类似如下界面

选择File > Search(或Ctrl + F快捷键)弹出搜索框,点到GUID 项并在” Search scope”中勾选”Header only”,粘贴GUID:899407D799FE43D89A2179EC328CAC21(这段GUID其实就是BIOS中Setup项的特殊标识,因为不管CFG Lock、BIOS Lock、DVMT还是Speed Shift都是在Setup下面的)。然后会出现这样的信息:
GUID pattern “899407D7-99FE-43D8-9A21-79EC328CAC21” found as “D7079489FE99D8439A2179EC328CAC21” in Setup at header-offset 00h

双击这段信息,会自动将Setup 的位置找出来,这时需要在找到的Setup那里点右键,选择Extract as is… ,把提取的Setup模块(**.ffs或**.bin)保存到相应文件夹。

接下来,我们需要把该模块转换成我们能读懂的信息。我们需要借助IFRExtractor这个工具,直接点击右侧加载模块按钮,再点击Extract,转换模块为TXT文本,并保存到相应文件夹,如下图所示:

寻找需要的偏移量

这样我们就提取出BIOS Setup模块信息了,此时用文本工具打开,并查找CFG Lock即可看到如下信息:

我们提取出CFG Lock的关键信息:

CFG Lock, VarStoreInfo (VarOffset/VarName): 0x4EE, VarStore: 0x1, QuestionId: 0x156, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 F0 02 F1 02 56 01 01 00 EE 04 10 10 00 01 00}
0x2F03A             One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x2F041             One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}

其中,VarStoreInfo值0x4EE以及VarStore的值0x1就是我们要找的。
VarStoreInfo的值是CFG Lock这个选项的地址,也可以说其在BIOS中的偏移量。后面的VarStore是BIOS默认值,为0x1。
0x1对应下面的Option里就是Enabled,意思就是CFG Lock这个选择默认被打开了,也就是说MSR 0xE2默认被锁定了。而我们想要解锁它就需要把该选择修改成0x0的Disabled,就是需要把0x4EE这个地址上的数值修改为0x0。

同样通过查找的方法,我们再看看DVMT Pre-Allocated的信息:

DVMT Pre-Allocated, VarStoreInfo (VarOffset/VarName): 0x798, VarStore: 0x1, QuestionId: 0x2736, Size: 1, Min: 0x0, Max 0xFE, Step: 0x0 {05 91 0D 05 20 05 36 27 01 00 98 07 14 10 00 FE 00}
0x2FF1D                 One Of Option: 0M, Value (8 bit): 0x0 {09 07 0E 05 00 00 00}
0x2FF24                 One Of Option: 32M, Value (8 bit): 0x1 (default) {09 07 0F 05 30 00 01}
0x2FF2B                 One Of Option: 64M, Value (8 bit): 0x2 {09 07 10 05 00 00 02}
0x2FF32                 One Of Option: 4M, Value (8 bit): 0xF0 {09 07 11 05 00 00 F0}
0x2FF39                 One Of Option: 8M, Value (8 bit): 0xF1 {09 07 12 05 00 00 F1}
0x2FF40                 One Of Option: 12M, Value (8 bit): 0xF2 {09 07 13 05 00 00 F2}
0x2FF47                 One Of Option: 16M, Value (8 bit): 0xF3 {09 07 14 05 00 00 F3}
0x2FF4E                 One Of Option: 20M, Value (8 bit): 0xF4 {09 07 15 05 00 00 F4}
0x2FF55                 One Of Option: 24M, Value (8 bit): 0xF5 {09 07 16 05 00 00 F5}
0x2FF5C                 One Of Option: 28M, Value (8 bit): 0xF6 {09 07 17 05 00 00 F6}
0x2FF63                 One Of Option: 32M/F7, Value (8 bit): 0xF7 {09 07 18 05 00 00 F7}
0x2FF6A                 One Of Option: 36M, Value (8 bit): 0xF8 {09 07 19 05 00 00 F8}
0x2FF71                 One Of Option: 40M, Value (8 bit): 0xF9 {09 07 1A 05 00 00 F9}
0x2FF78                 One Of Option: 44M, Value (8 bit): 0xFA {09 07 1B 05 00 00 FA}
0x2FF7F                 One Of Option: 48M, Value (8 bit): 0xFB {09 07 1C 05 00 00 FB}
0x2FF86                 One Of Option: 52M, Value (8 bit): 0xFC {09 07 1D 05 00 00 FC}
0x2FF8D                 One Of Option: 56M, Value (8 bit): 0xFD {09 07 1E 05 00 00 FD}
0x2FF94                 One Of Option: 60M, Value (8 bit): 0xFE {09 07 1F 05 00 00 FE}

由以上信息可知,BIOS里默认的DVMT-Pre-Allocted值为32MB,我们需要将其扩大,但BIOS最大只支持提高到64M。那就要把0x798这个地址上的数值修改为0x2

同样找到BIOS Lock的偏移量和值

可以看出默认值是0x1表示Enable,需要将其修改为0 Disabled。

最后我们整理出需要修改的变量和值,如下:

名称        偏移量        当前值        修改后的值
CFG Lock    0x4EE        0x1       ->       0
DVMT        0x798        0x1       ->       2
BIOS Lock   0x8AA        0x1       ->       0

修改BIOS隐藏设置

以上网上教程很多,我根据个人经验进行了再整理,下面重点来了。
由于CFG Lock、DVMT和BIOS Lock等选项在BIOS中都是隐藏的,所以需要通过特殊工具来改变它们默认的值。这里我们用RU.EFI这个工具来作演示,好处文章开头已经讲过了,这面正式开始:
1.将RU.EFI拷贝到UEFI启动分区的EFI/CLOVER/tools目录中(RU有UEFI版和DOS版的,这里只演示UEFI版的,因为现在大多主板都支持UEFI,而且不用制作Dos启动盘,直接copy了就可以用)

2.关机重启进入CLOVER启动界面,按方向键找到shell工具(必须在CLOVER配置中勾选GUI-Scan -tool项,才能看到),回车进入UEFI Shell。

3.这时会看到很多fs0、fs1、fs2、fsXX…等设备,这些可以理解为硬盘的标识符,一般UEFI分区都在第一块硬盘第1个分区。需要在shell中进入RU的EFI分区,我这里是fs0,直接在shell中输入fs0: 就会进入相应分区,此时shell提示符会变成fs0:/,输入ls可查看当前分区下的文件有哪些(有可能当你用U盘启动CLOVER时,不一定会是fs0,如果是其它的就自行测试了,我不太懂UEFI shell,所以不能提供更多简便操作方法。)

4.输入命令cd /EFI/CLOVER/tools就可进入RU.EFI所在的目录,然后输入RU.EFI 回车,就会进入RU的图形界面,这时就可以任意操作BIOS了。

下面是使用RU的操作快捷键

F1 在主屏幕右侧显示快捷键帮助文档

  • CTRL+F1 显示通用的帮助.
  • F12屏幕截图,存储在RU所在根分区(不支持NTFS分区)
  • 按 ALT + 菜单条中的红色字母键(如Config)会打开相应菜单
  • ALT+F: 打开文件
  • ALT+C: 打开BIOS配置
  • ALT+E: 打开编辑
  • ALT+G: 跳转选项
  • ALT+T: 工具选项
  • ALT+S: 系统信息
  • ALT+Q: 退出(关闭RU)
  • CTRL+W: 保存对BIOS的修改。(如果不更改任何修改直接退出RU即可)
    还有其它的快捷键可以打开相应菜单看到

5.更改BIOS隐藏选项一般只需要ALT + C打开Config菜单选择UEFI Variable 可看到上图所示的BIOS变量区。(也可以直接 ALT + = 打开)

6.按PAGE UP 和PAGE DOWN进行翻页,找到Setup项,可能会看到两个Setup项,分别按回车进去看下,选择数据较多的一个Setup。在数据视图中按CTRL+PAGE UP 和 CTRL+PAGE DOWN 进行翻页。

7.以修改BIOS Lock为例,需修改0x8AA的值为0,首先找到0x8A0再用左右方向键定位纵向0A的数值,按回车键进入修改模式,直接输入数字0,再按CTRL+W保存修改,你会看到”Updated OK: Setup”的信息,此时BIOS Lock的值就被写入了BIOS中。

其它的BIOS修改隐藏选项修改方法也如此操作,BIOS设置就算完成了。


文章作者: 张登友
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张登友 !
  目录