欢迎光临散文网 会员登陆 & 注册

XFX RX580+爱国家Z97在纯UEFI环境启动时黑屏问题一例的解决方法

2023-03-06 23:17 作者:xmaojian  | 我要投稿

RX580作为三朝矿佬用在N奶机上是很实惠的选择,之前入了一块XFX的满血版来备用,这几天意外白嫖到了一块E3-1270 V3,于是拿出了早前在海鲜市场收的Gigabyte Z97X-Gaming 3主板,想组在一起小小折腾一下,本以为这些东西放在一起应该会很正常,结果发现当主板关闭CSM+开启安全启动的纯UEFI模式下,RX580启动时出现了黑屏,尽管可以正常启动到win10桌面,但是启动过程中无显示+无法进入CMOS设置界面,极为不便,于是就有了下面的笔记。

配置要点及场景条件:

主板:Gigabyte Z97X-Gaming 3

CPU:E3-1270 V3

显卡:XFX RX580(2304SP) 8GB黑狼(产品贴纸信息:RX580-PBD VP.0 GTS XXX ED RX580 8GB OC+)

内存:4G×4共16G(DDR3-1600)

系统:WIN10 22H2

磁盘:希捷 500G机械,使用GPT格式分区表,带有ESP引导分区,MSR保留分区和数据分区。

7系以后Giga主板基本普及了UEFI固件,该主板具有关闭CSM+开启安全启动的功能,毫无疑问是支持纯UEFI环境引导的。

所购入XFX RX580可以确认是原版BIOS而非矿卡MOD版BIOS,BIOS文件本身自带UEFI模块,也就说理论上支持纯UEFI启动。

磁盘使用微软标准GPT格式分区表,此为使用纯UEFI环境启动的基础必备条件。



故障现象:当主板CMOS设置为CSM选项为Never(即关闭),安全启动选项设置为Enabled+Standard模式后,保存BIOS后电脑自动重启,开机即黑屏,蜂鸣器报1长2短错误,显示器随即进入节能状态,此时按del键试图进入CMOS设置界面,显示器依旧保持节能状态且无画面输出,这时使用reset键复位电脑,故障依旧,不按任何按键的情况下,平台仍可执行引导动作(硬盘灯持续闪亮),等待一会后,显示器亮起,电脑已正常进入并显示win10桌面。换用一张自己添加UEFI模块的老N卡则无此问题。




解决过程:一通搜索大法后,发现该问题并不是个例,如:


1、https://winraid.level1techs.com/t/xfx-rx-580-uefi-gop-booting-problem/33833/4

1



2、https://winraid.level1techs.com/t/amd-and-nvidia-gop-update-no-requests-diy/30917/1157

2



3、https://www.techpowerup.com/forums/threads/rx-580-o8g-graphics-output-protocol.260212/

这一例故障是Asus RX580(固件默认支持uefi启动)+微星B450m主板的组合,微星板好在可以智能识别该故障,并自动切换到CSM打开的状态,而老平台的爱国家平台因为黑屏,只能关机清CMOS才能解决


虽然这三例品牌配置和软件环境各不相同,但一个共同现象就是一旦开启纯UEFI环境则操作系统启动过程中即出现黑屏,考虑到B450M这种较新的平台也不能避免,所以我倾向于故障原因是因为RX5XX系列的显卡的BIOS中所集成的某个或某几个版本的UEFI模块本身有缺陷,导致前者和某些主板配合使用时无法使用纯UEFI环境来启动操作系统。

一个佐证就是:第一张图中的作者使用的也是Giga主板+XFX RX580的组合,并为此事联系了Gigabyte的技术支持,得到的回答是他的RX580卡固件中的UEFI模块结构存在问题。(原文:I contacted gigabyte email tech support and they mentioned that the Uefi structure in my video card is bad. )

考虑到AMD系列显卡在配套软件上的黑历史,在将主板BIOS更至最新的前提下,将解决重点放到BIOS固件本身。上面第二张图的作者通过多次替换他的RX560的显卡bios文件中的uefi模块,(这里作者使用了GOPupd先替换至1.57.0.0.0,然后再次更新到1.69.0.15.50)使黑屏问题得到了解决,同时也进一步印证了某些A卡 bios中的uefi支持模块似乎确实存在bug。既然这样,那么或许我的卡也可以采用这种方法来进行修复。


关于GOPupd工具的概述及下载,可参看我的这篇专栏(一共有3个版本打包,可解压其中的0.5.2版本,修改原bios过程中会用到其中包含的工具和文件):

https://www.bilibili.com/read/cv21754049?spm_id_from=333.999.0.0

作为一个可以为老显卡bios添加uefi支持模块的工具,我在很多老显卡上都使用过,并且屡试不爽,但是当我尝试使用该工具最新的0.5.2mod版本给这张卡的备份bios(使用GPU-Z)更新UEFI支持模块时,却出现了如下图的信息:

提示你已经有最新版且有效的GOP模块

上图提示你的显卡bios文件已经存在有最新版且生效的GOP模块(版本号是1.70.0.15.50),随即自动退出,也就是说该工具只能根据它的软件判定条件进行新版本的升级替换操作,而不能自由选择GOP模块的版本进行替换。

既然自动的不好用,那就只有尝试手动操作了,在gopupd工具的目录中有一个名为#AMD_ROM_Info.bat的windows批处理文件,看文件名字应该是具备查看bios文件相关信息功能的,于是将我备份的XFX RX580 BIOS文件直接拖放到这个批处理上,得到如下图的信息:

注意图中两个红框

由于我的XFX RX580原始bios即存在UEFI模块,所以上图中,Image 1是Legacy ROM模块的相关信息,Image 2则是GOP模块的相关信息,注意2个红框的部分(关于AMD显卡bios的基本结构建议阅读https://winraid.level1techs.com/t/amd-and-nvidia-gop-update-no-requests-diy/30917/1),第一个框给出了GOP模块在BIOS文件中起始位置的偏移地址(0xE800),第二个框则给出了GOP模块的大小(0xE600=58880字节),A卡bios由于只有Legacy ROM模块部分是有校验的,所以我们可以使用16进制文件编辑器对GOP模块部分进行复制—粘贴,从而达成替换的效果。(注意:如待修改的bios文件无gop模块,则直接使用gopupd进行自动添加,此外N卡bios结构和模块校验和A卡不同(更复杂),如想手动添加,请深入学习上面给出的文章链接后再行操作)。



修改:

(1)自己选用任意16进制文本编辑器(我这里使用的Winhex),打开待修改的bios文件(我这里名为Ellesmere.rom),转到0xE800处(GOP模块开头处)待命,如下图:

bios文件中GOP模块的开头


(2)接着进入gopupd工具中的#GOP_Files目录,找到名为amd_gop_mod.efirom(大小为58880字节,编辑器查看该文件最后一位的偏移地址应为0xE5FF,加上0x0这一位,则文件整体大小正好=0xE600=58880字节)的这个文件,然后使用16进制编辑器打开这个文件,左键选中第一个字节中的第一个5,然后点击右键,选择编辑—复制所有—16进制数值,如下图:

使用16进制编辑器打开amd_gop_mod.efirom,并复制其中的所有16进制数值


(3)接下来转到刚才打开的bios文件(点击上图中的Ellesmere.rom标签),左键将光标定位到0xE800处的第一个5,然后点击右键—选择编辑—剪贴板数据—写入(注意这里要点击写入(实际操作就是替换),而不要点击粘贴,否则修改完的文件就变大了),如下图:


将第2步复制的数据写入待修改的bios文件


(4)、第三步完成后,检查模块写入后的末位字节的偏移地址应为(0xE800+0xE600-1=1CDFF,如下图),如不会计算,可下载win7计算器的提取版,使用程序员模式即可。

WinHex中新写入的文件数据会以亮蓝色标识,很容易就能识别


(5)保存修改后的bios文件,并检查大小是否和源文件一致。如下图。

确保原始备份bios文件和修改好的文件的字节数大小一致,否则不能刷新



刷新:

接下来就是将mod好的bios文件刷入显卡rom芯片中,可使用ATI Flash 2.87版,刷新方法和刷新工具下载请参考我专栏的这篇文章:(微星(MSI) OEM 联想 RX570 4G 显卡BIOS分享 - 哔哩哔哩 (bilibili.com)

基本命令格式:

amdvbflash -i                       #获取显示适配器ID,如机器里面只有一张显卡,一般为0

amdvbflash -p -f 显示适配器ID 你的bios文件名称                      

#假设适配器ID为0,待刷的文件名为580gopmod.rom

则刷新命令为:

amdvbflash -p -f 0 580gopmod.rom


如操作成功,则最后一行返回信息为:Restart System To Complete VBIOS Update.如下图,接着关闭刷新窗口重启电脑即可:

刷新修改过的显卡bios

至此,全部工作结束,经试验,使用gopupd工具中这个修改过的名为amd_gop_mod.efirom模块替换我的RX580原gop模块,即可正常使用纯uefi模式启动系统(关闭CSM),在启动过程中始终有图像输出,并可正常进入CMOS设置。



XFX RX580+爱国家Z97在纯UEFI环境启动时黑屏问题一例的解决方法的评论 (共 条)

分享到微博请遵守国家法律