Hackintosh: 给我的 XPS 13 解锁 MSR 0xE2 寄存器 (CFG Lock)

2021-07-18
2分钟阅读时长

我曾经在博客水过一篇解锁 BIOS CFG Lock 的文章,本文是一篇从原博客恢复的文章。

想不到因为一块小小的 CMOS 电池引发了事故:因为懒,我搁置了更换 CMOS 电池的想法。当我换上电池,安装好笔记本后盖并开机的时候,Hackintosh 无法引导了!发觉是 BIOS 设置因为掉电而重置了。

准备工具

  1. OpenCore 引导工具
  2. DiskGenius 或 Windows 自带磁盘管理
  3. Flash Programming Tool 可以在 Intel CSME System Tools 中找到。需要符合自己的芯片组。例如笔者 i7-6500U 属于 Skylake,芯片组是 100 系列。
  4. [UEFITool][https://github.com/LongSoft/UEFITool/releases] 查找BIOS中相关变量(字串)的工具
  5. [IRFExtractor][https://github.com/LongSoft/Universal-IFR-Extractor/releases]

开始操作

备份和提取BIOS

首先备份本机BIOS:

FPTW64.exe -D 备份文件名.rom -bios

2344528473

分析BIOS信息

用 UEFITool 找到 GUID:899407D799FE43D89A2179EC328CAC21 的内容,然后提取出来。

65520-jsakfia4v4k.png

31088-930tk8xnexk.png

83476-aogo74uv0es.png

34613-i9io54og9bq.png

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

28109-ga5k5ezq1np.png

查找偏移量

55958-vlamwixawes.png

查找 CFG Lock 项。

0x343B7 				One Of: CFG lock, VarStoreInfo (VarOffset/VarName): 0x109, VarStore: 0x1, QuestionId: 0x278, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 15 01 16 01 78 02 01 00 09 01 10 10 00 01 00}
0x343C8 					One Of Option: Disabled, Value (8 bit): 0x0 {09 07 21 02 00 00 00}
0x343CF 					One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 20 02 30 00 01}
0x343D6 				End One Of {29 02}

其中

VarStoreInfo (VarOffset/VarName): 0x109, VarStore: 0x1

就是我们要的东西。

VarStoreInfo的值是CFG Lock这个选项的地址,也可以说其在BIOS中的偏移量。后面的VarStore是BIOS默认值,为0x1。

0x1对应下面的Option里就是Enabled,意思就是CFG Lock这个选择默认被打开了,也就是说MSR 0xE2默认被锁定了。而我们想要解锁它就需要把该选择修改成0x0的Disabled,就是需要把0x109这个地址上的数值修改为0x0。

74647-jzzl7kmbtfo.png

进 grub 修改

  1. 关机重启进入 OpenCore 启动界面,按方向键找到 shell 工具,回车进入 UEFI Shell。
  2. 找到 EFI 所在分区,一般为 fs0。
  3. 我们 cd EFI/BOOT 并引导入 GRUB。
  4. 键入 setup_var 0×109,回车(后面的0×109是刚才前面提取的数值)。
  5. 看到 offset: 0×109 is:0×01,表示未解锁。
  6. 输入 setup_var 0x109 0×00。设置完成。 
Avatar

Kirin

六月始めに生まれ、八月終わりに遠のいた