最近入手了一张摩尔线程MTT S80显卡,打算基于旧电脑搭建一个家庭AI实验平台,但其对主板有两个硬性功能要求,即:Above 4G Decoding、Resizable BAR(AMD平台称作SAM)。对于使用华硕Z97-K R2.0主板的旧电脑,其最后版本的BIOS(0903)里仅有Above 4G Decoding功能,因此产生了修改BIOS的想法
本文仅记录按照ReBarUEFI官方文档,成功启用Resizable BAR的流程,不同品牌或不同型号的主板不可照搬!!!
即使是同品牌且同型号的主板,也请准备好BIOS修改失败导致电脑无法启动时的备案!!!
AFUDOS 3.05.04(必须支持/GAN参数)
请自行搜索(截至发文时可在GitCode上找到)
UEFITool 0.28.0(必须该版本,不能高也不能低)
官方下载地址:https://github.com/LongSoft/UEFITool/releases/tag/0.28.0
UEFIPatch 0.28.0(必须该版本,不能高也不能低)
官方下载地址:https://github.com/LongSoft/UEFITool/releases/tag/0.28.0
MMTool 4.50.0.23(官方文档指出,Skylake架构(6代)之前的使用4.50.0.23,在此架构之后的使用5.02.0025)
请自行搜索(截至发文时可在GitCode上找到)
ReBarDxe(含ReBarDxe.ffs、ReBarState.exe)
官方下载地址:https://github.com/xCuri0/ReBarUEFI/releases
补丁文件(含patches.txt、HswAbove4G.txt、BdwUSB3.txt)
官方下载地址:https://github.com/xCuri0/ReBarUEFI/tree/master/UEFIPatch
Rufus
官方下载地址:https://rufus.ie/zh/#download
被修改主板的电脑需可正常进入Windows系统(或PE,但未亲自验证过)
将主板BIOS升级至官方最后版本(0903)
官方下载地址:https://www.asus.com.cn/supportonly/z97-k%20r2-0/helpdesk_bios/
(可选)如果修改BIOS ROM文件的电脑非Windows系统,需安装Wine或Windows虚拟机以运行上述工具软件
空白U盘一个(只需要不到1GB的容量,但会被整体格式化)
Rufus参数设置如下图:

其他系统需借助Windows虚拟机运行rufus,并将U盘重定向到虚拟机
请注意设备不要选错,引导类型为FreeDOS,其他参数通常无需修改。
将AFUDOS工具包含的AFUDOS.exe、DOS.exe拷入U盘(不建议在U盘里新建文件夹来存放)。
DOS.exe很可能并不需要,但因为AFUDOS工具中包含该程序,因此也一并拷入了U盘。
以华硕Z97-K R2.0为例:
开机时不停连按F2或Del进入BIOS设置界面
在BIOS界面按F8进入Boot Menu
在Boot Menu中选择U盘启动
在成功进入FreeDOS后,其屏幕最后的输出应为
C:\> 此时输入以下指令并回车(注意/O为大写字母O)
AFUDOS backup.rom /O 其中backup.rom为ROM导出到文件后的文件名,可自行命名
随后可直接按电脑机箱上的电源按钮关机,然后再拔出U盘
先将U盘里的backup.rom文件复制一份到用于修改BIOS ROM的电脑,U盘里的原文件可作为备份。

File -> Search打开搜索框,转到GUID子页,选择Header only选项,搜索3C1DE39F-D207-408A-AACC-731CFB7F1DD7

搜索结果应类似下图

搜索后,结果先是出现在下方Messages分栏里,通过鼠标双击Messages里的搜索结果会自动跳转到ROM文件中相应的位置,但是如果搜索后Messages里面并未出现搜索结果信息,则表示未搜索到指定的GUID,本步骤搜索的GUID理论上是肯定会搜索到的,如果未搜索到,请核对输入的内容是否有误
在定位到3C1DE39F-D207-408A-AACC-731CFB7F1DD7的位置后,注意其行首的缩进,慢慢向下滚动,直至出现Volume free space,如下图

鼠标右键点击Volume free space上方紧邻的File(该File的GUID是多少无所谓),选择Insert after...,即:在该文件后方插入,此时选择ReBarDxe.ffs文件,完成插入后应类似下图结果(注意图中标注为Insert的行)

确认无误后,File -> Save image file,将修改后的ROM另存为新的文件,这里假设命名为z97-rebar.rom
根据官方文档,针对Z97主板,还需对下载下来的patches.txt进行修改,即:将HswAbove4G.txt、BdwUSB3.txt补丁文件的内容手动复制粘贴到patches.txt文件内容的末尾,注意粘贴前先换行到空白新行。
首先新建一个文件夹,然后将刚刚修改好的patches.txt和UEFIPatch.exe程序复制到新建的文件夹里,随UEFIPatch下载下来的patches.txt和patches-misc.txt不用管。
然后进入刚才新建的文件夹里,确保文件夹里有且仅有patches.txt、UEFIPatch.exe、z97-rebar.rom这三个文件。
接着用鼠标左键拖拽z97-rebar.rom文件至UEFIPatch.exe文件图标上,出现“+用UEFIPatch.exe打开”提示后,松开鼠标左键,随后,文件夹内会自动生成一个z97-rebar.rom.patched文件,此文件为打完补丁后的BIOS ROM,但该文件不能直接使用。
官方文档指出,由于UEFIPatch工具的bug,导致其在对大部分华硕主板BIOS ROM文件进行操作时会出现Pad-file相关的错误,这里华硕Z97-K R2.0也遇到了,因此接下来需要将打完补丁的File从z97-rebar.rom.patched文件中提取出来,再使用MMTool工具逐个替换到原始的z97-rebar.rom中。
这里我们用UEFITool打开z97-rebar.rom.patched文件,再另外打开刚刚使用过的patches.txt文件(用记事本打开即可)。

这里我们以patches.txt文件为依据,逐个复制GUID(上图中红色粗下划线表示)到UEFITool中进行GUID搜索,然后跳转到对应的File位置,然后在File上点鼠标右键,选择Extract as is...将其导出为ffs文件,如果在patches.txt文件中,这个GUID的开头有#(上图中红圈表示),则表示该补丁未应用,因此可略过该GUID

对于华硕Z97-K R2.0主板,每种GUID导出一个即可,其中:
54B070F3-9EB8-47CC-ADAF-39029C853CBB(AMI APTIO V NvramSmiDxe)不在ROM文件中,可忽略
79AA6086-035A-4AD9-A89A-A6D5AA27F0E2(NBPEI)会出现两个搜索结果,仅导出任意一个即可(已尝试分别导出后计算其哈希值,证实两个搜索结果对应的File内容完全相同)
最终导出的ffs文件如下(可自行命名,此处仅为参考名称):
PciHostBridge.ffs
PciBus.ffs
NvramSmi.ffs
Runtime.ffs
NBPEI.ffs
使用MMTool加载z97-rebar.rom(插入了ReBarDxe.ffs,但又还没有用UEFIPatch打过补丁的版本),并切换到替换子页面

接下来的操作就是点击浏览打开刚刚导出的ffs文件,然后在下方的列表里找到ffs文件对应的GUID并选中,下图以PciBus.ffs为例

此时,请仔细核对下方列表中选中的GUID与模块文件对应的ffs文件是准确对应的(请勿以文件名为准,因为部分GUID在MMTool中对应的文件名为空)
然后点击替换以应用补丁
其中因为NBPEI在导出时出现了两次,因此应用补丁时也要分别替换到两次出现它的位置(可从下往上翻找,一个位置是在最后一个卷,另一个位置在倒数第二个卷)
将所有ffs文件逐个(无所谓顺序)替换到ROM中后,点击另存映像为...将ROM另存为z97mod.rom(可随意命名,但为方便后续在DOS中的操作,请尽量简短命名,且不可使用除字母、数字以外的任何字符)
将z97mod.rom文件放到之前存放UEFIPatch.exe的新建文件夹内,参照之前的步骤,将z97mod.rom拖拽到UEFIPatch.exe文件上并松开,观察是否还会生成新的.patched文件,如果没有生成则表示没有遗漏,若有生成,则建议从导出打过补丁的File步骤开始重新打补丁
根据官方文档,Z97芯片组的主板里只有华擎(ASRock)的需要应用DSDT补丁,所以华硕Z97-K R2.0可直接跳过DSDT补丁步骤
将最后得到的z97mod.rom文件复制到之前的工具U盘中,安全弹出设备后再拔出U盘,否则有一定概率导致U盘中的z97mod.rom文件未写入完整,若刷入不完整的ROM文件将直接导致主板变砖!
将U盘插入待刷入BIOS的Z97电脑,参照之前导出BIOS ROM的步骤进入FreeDOS系统,屏幕提示内容应如下
C:\> 输入下方刷写指令并回车后耐心等待刷写过程(如果因为供电不稳等问题导致电脑无法稳定运行,则不应该直接刷写ROM,而应该考虑配备UPS等设备保障其不会异常中断,该过程如果中断将直接导致主板变砖!!!)
AFUDOS z97mod.rom /GAN 待刷写完成后,可直接按机箱电源按钮关机
参照华硕Z97-K R2.0官方手册,将CMOS配置数据清除

(上图截取自华硕Z97-K R2.0官方用户手册)
在开机前先拔出U盘,避免U盘影响电脑启动,启动后需先参照之前U盘启动的步骤进入BIOS设置界面,对两项关键设置进行确认与修改
启用Above 4G Decoding
禁用CSM
这里在实际操作时也一并禁用了安全启动(Secure Boot),如果无法得到与本文同样的结果,可尝试禁用安全启动(选择清除相关密钥的选项即可禁用)
以上两项设置均在高级模式(F7)的Boot子页面下
确认正确修改后,保存设置并重启进入Windows系统
重启进入Windows系统后,运行ReBarState.exe,界面如下

在此时输入32并回车(表示将BAR size设置为无限大),回车后输出结果如下

然后重启电脑生效
关机并换上摩尔线程MTT S80显卡后,成功开机进入系统(单卡、无核显)

这样一来也算是DDR3内存再利用了