获取验证码
前段时间,我与文超(多款 ESXi 社区工具开发者,包括AMD Zen4/Zen5 平台 ESXi IPMI 温控驱动、瑞昱网卡 ESXi 驱动扩展包的创作者)进行了交流。他为博通旗下 VMware 生态社区做出了诸多出色贡献。依托他最新的开发成果,如今在铭凡 MS-A2 这类主流 AMD 锐龙平台上部署 ESXi 时,功能短板被大幅补齐,而该设备也成为了实验室环境中搭建 VMware 云基础架构(VCF 9.1)的理想机型。
目前仅剩一项功能未能实现充分利用:新款 AMD 锐龙处理器搭载的集成显卡(核显)。这款核显性能不俗,完全可以运行人工智能模型。
我此前已针对该问题做过大量调研,甚至联合研发团队进行过调试,能听到全新的解决思路总是一件好事。没想到几天后,文超就拿出了一套可行方案,不过该方案存在一些限制条件,我结合自身过往相关经验协助完善了细节。
这套 ESXi 核显直通方案主要归功于文超,同时他也借鉴了 Proxmox 社区此前的实践经验。Proxmox 社区同样遭遇过核显直通难题,并摸索出了有效的规避办法。
简单来说,若要在 ESXi(或 Proxmox)的虚拟机中正常使用 AMD 核显,必须准备视频 BIOS(VBIOS)镜像文件与图形输出协议(GOP)文件。你可以自行提取并生成这两类文件(下文附详细教程),目前 Proxmox 社区已在 GitHub 仓库中分享了大量现成文件,可直接下载使用。
如果仓库中没有对应你设备的文件,就需要自行制作 VBIOS 和 GOP 文件,也欢迎将制作好的文件分享至社区,惠及更多技术从业者。我已使用仓库内的镜像文件,在 ** 铭凡 MS-A2(锐龙 9 7945HX)和极摩客 K11(锐龙 9 8945HS)** 两台设备上,搭配 Ubuntu 26.04 虚拟机完成了全流程测试验证,具体操作步骤如下。
第一步:下载对应核显的 VBIOS 镜像与音频镜像文件
下载地址:https://github.com/isc30/ryzen-gpu-passthrough-proxmox
铭凡 MS-A2
视频 BIOS 镜像:https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/vbios_7945hx_MS-A2.bin
图形输出协议镜像:https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/AMDGopDriver.rom
极摩客 K11
视频 BIOS 镜像:https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/vbios_8945.bin
图形输出协议镜像:https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/AMDGopDriver.rom
第二步:将两个镜像文件上传至 ESXi 数据存储
可将文件存放至共享目录,也可后续直接放入对应虚拟机的文件夹内。
第三步:启用 AMD 核显 PCI 直通功能
通过 vSphere 客户端或 ESXi 主机客户端开启核显直通,具体界面参考下方截图。
铭凡 MS-A2 直通设置界面

极摩客 K11 直通设置界面

第四步:创建并配置 Linux 虚拟机(示例系统:Ubuntu)
使用 vSphere 客户端或 ESXi 主机客户端新建 Linux 虚拟机并完成系统安装。本次示例系统为 Ubuntu 26.04。请提前开启 RDP 远程桌面并确保功能正常,后续步骤需要禁用 VMware 默认的 SVGA 虚拟显卡,届时将无法使用虚拟机控制台。
执行以下命令配置系统与远程桌面:
apt update && sudo apt upgrade -y apt install -y xrdp xfce4 xfce4-goodies echo "startxfce4" > ~/.xsession adduser xrdp ssl-cert systemctl enable xrdp systemctl restart xrdp ufw allow 3389/tcp ufw reload
确认虚拟机可正常通过 SSH 和 RDP 连接后,关闭虚拟机。
第五步:为虚拟机添加 PCI 设备
编辑虚拟机设置,依次添加核显与高清音频控制器两个 PCI 设备,请牢记设备添加顺序,该顺序将影响后续配置。
Minisforum MS-A2

GMKtek K11

第六步:配置虚拟机高级参数
继续编辑虚拟机,切换至高级参数选项卡,添加以下配置项。
务必保证 pciPassthru0、pciPassthru1 对应的镜像文件名,和上一步 PCI 设备的添加顺序保持一致(顺序示例:先核显、后音频控制器)。
镜像文件路径可使用相对路径(文件与虚拟机配置文件同目录),若存放于共享目录,则必须填写数据存储完整路径,示例:/vmfs/volumes/datastore1/files/vbios_7945hx_MS-A2.bin。
同时需要将 svga.present 设置为 FALSE,禁用 VMware SVGA 虚拟显卡与虚拟机控制台,这也是第四步提前配置 RDP 的原因。
铭凡 MS-A2 配置项

pciPassthru0.opromEnabled = TRUE
pciPassthru0.filename = "vbios_7945hx_MS-A2.bin"
pciPassthru1.opromEnabled = TRUE
pciPassthru1.filename = "AMDGopDriver.rom"
极摩客 K11 配置项

pciPassthru0.opromEnabled = TRUE
pciPassthru0.filename = "vbios_8945.bin"
pciPassthru1.opromEnabled = TRUE
pciPassthru1.filename = "AMDGopDriver.rom"
全部配置完成后点击确定,保存虚拟机设置。
手动填写高级参数容易出错,在添加完核显和音频控制器 PCI 设备后,也可以使用以下 PowerCLI 脚本自动完成配置,按需修改参数即可。
$settings = @{
"pciPassthru0.opromEnabled" = "TRUE"
"pciPassthru0.filename" = "vbios_7945hx_MS-A2.bin"
"pciPassthru1.opromEnabled" = "TRUE"
"pciPassthru1.filename" = "AMDGopDriver.rom"
}
$vm = Get-Vm "Ubuntu2604"
foreach ($setting in $settings.GetEnumerator()) {
New-AdvancedSetting -Entity $vm -Name $setting.Key -Value $setting.Value -Force -Confirm:$false
}
$vm | Get-AdvancedSetting -Name "svga.present" | Set-AdvancedSetting -Value $false -Confirm:$false第七步:验证核显是否正常识别并初始化
开启虚拟机,通过 SSH 登录系统,执行以下命令检查核显状态:
dmesg | grep 'Initialized amdgpu'
铭凡 MS-A2 配置项

极摩客 K11 配置项

第八步:安装 AMD 显卡配套工具(可选)
核显正常识别后,可安装官方工具查看硬件信息、状态数据:
apt install firmware-amd-graphics firmware-linux-nonfree mesa-utils mesa-utils-extra mesa-vulkan-drivers -y apt install radeontool vulkan-tools amd-smi -y apt install -y rocm rocm-smi
铭凡 MS-A2


极摩客 K11


AMD 核显直通至 Windows 虚拟机配置方案
Proxmox 社区反馈,AMD 核显直通至 Windows 系统时,普遍会出现经典的43 号设备错误。参考该问题的解决经验后,我与文超针对 ESXi 环境做了相关测试。就我个人设备而言,该方案稳定性欠佳。下文将分享我们的测试成果,供有 Windows 使用需求的用户参考。
第一步:修改 ESXi 主机直通映射文件
编辑 ESXi 主机内的 /etc/vmware/passthru.map 文件,添加以下内容,避免开启核显直通后主机 USB 设备被误直通至虚拟机。修改完成后重启 ESXi 主机生效。
plaintext
# AMD 显卡设备
1002 164e d3d0 default
1002 1640 d3d0 default
第二步:下载对应镜像文件
与 Linux 方案一致,前往仓库下载对应设备的 VBIOS 镜像与 GOP 镜像文件。
铭凡 MS-A2
视频 BIOS 镜像:https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/vbios_7945hx_MS-A2.bin
图形输出协议镜像:https://github.com/isc30/ryzen-gpu-passthrough-proxmox/blob/main/AMDGopDriver.rom
第三步:上传镜像文件至 ESXi 数据存储
操作要求同前文。
第四步:开启 AMD 核显 PCI 直通功能
操作步骤同前文,参考对应截图。
第五步:创建并安装 Windows 虚拟机
本次测试使用 Windows 11,旧版 Windows 系统能否正常使用暂未验证。安装系统后务必提前开启 RDP 远程桌面,随后关闭虚拟机。
第六步:添加 PCI 设备
编辑虚拟机,依次添加核显与高清音频控制器,记录设备添加顺序。(参考前文截图)
第七步:配置虚拟机高级参数
配置规则、参数内容、路径要求均与 Linux 虚拟机一致,可使用以下 PowerCLI 脚本批量配置:
powershell
$settings = @{
"pciPassthru0.opromEnabled" = "TRUE"
"pciPassthru0.filename" = "vbios_7945hx_MS-A2.bin"
"pciPassthru1.opromEnabled" = "TRUE"
"pciPassthru1.filename" = "AMDGopDriver.rom"
}
$vm = Get-Vm "Ubuntu2604"
foreach ($setting in $settings.GetEnumerator()) {
New-AdvancedSetting -Entity $vm -Name $setting.Key -Value $setting.Value -Force -Confirm:$false
}
$vm | Get-AdvancedSetting -Name "svga.present" | Set-AdvancedSetting -Value $false -Confirm:$false
第八步:安装 AMD 显卡驱动
启动虚拟机,前往 AMD 官网下载对应型号的离线版显卡驱动(肾上腺素版)。以锐龙 9 7945HX 为例,驱动下载地址:https://www.amd.com/en/support/downloads/drivers.html/processors/ryzen/ryzen-7000-series/amd-ryzen-9-7945hx.html
安装 7-Zip 解压驱动包,在 Windows 设备管理器中手动指定驱动文件夹完成安装。
第九步:修复 Windows 43 号设备错误
Proxmox 社区提出,通过配置系统开机 / 关机脚本调用pnputil工具开关显卡设备,可解决 43 号错误。该方法在文超的设备上测试有效,但在我的设备上并未起效。
你可以使用管理员身份运行以下 PowerShell 脚本,自动配置本地组策略脚本:
powershell
# 请以管理员身份运行
$gpPath = "$env:WINDIR\System32\GroupPolicy\Machine\Scripts"
$scriptsIni = Join-Path $gpPath "scripts.ini"
New-Item -ItemType Directory -Force -Path $gpPath | Out-Null
@"
[Startup]
0CmdLine=C:\Windows\System32\pnputil.exe
0Parameters=/enable-device /class Display /bus PCI /connected
[Shutdown]
0CmdLine=C:\Windows\System32\pnputil.exe
0Parameters=/disable-device /class Display /bus PCI /connected
"@ | Set-Content -Path $scriptsIni -Encoding Unicode
# 检查并创建组策略配置文件
$gptIni = "$env:WINDIR\System32\GroupPolicy\gpt.ini"
if (-not (Test-Path $gptIni)) {
@"
[General]
Version=1
"@ | Set-Content -Path $gptIni -Encoding ASCII
}
gpupdate /force
脚本执行完成后重启虚拟机,正常情况下核显的 43 号错误会消失。
第十步:临时手动修复方案(可选)
若上述开机脚本无效(我多次测试均未生效),可在系统启动后,以管理员身份手动执行以下两条命令,临时刷新显卡设备状态:
plaintext
C:\Windows\System32\pnputil.exe /disable-device /class Display /bus PCI
C:\Windows\System32\pnputil.exe /enable-device /class Display /bus PCI
打开设备管理器,执行命令后界面会自动刷新,此时 AMD 核显即可正常工作。
备注:第九、第十步的效果因设备而异。自动开机脚本方案并非对所有硬件生效,我本人仅手动执行命令的方式成功解决问题。
自行提取 VBIOS 镜像文件
第一步:引导系统并编译工具
将主机从 Ubuntu Live 镜像启动,执行以下命令编译vbios.c源码文件:
plaintext
apt install gcc -y
gcc vbios.c -o vbios
第二步:导出 VBIOS 镜像
运行编译完成的工具,自动导出核显 VBIOS 文件:
plaintext
./vbios
(配图:命令执行界面)
自行提取音频设备 GOP 镜像文件
该流程需要借助 Windows 系统操作。
第一步:获取主板 BIOS 文件
前往设备厂商官网下载对应主板 BIOS 安装包,解压后提取其中的 BIOS 二进制文件(示例文件名:F1WSA.BIN),并重命名为 bios.bin。
第二步:准备提取工具
下载 UEFI 提取工具(UBU_v1_80_a17.rar),解压后将所有文件与上一步的bios.bin放在同一目录。
第三步:提取 GOP 驱动文件
运行 UBU.bat 脚本,按照提示选择选项:
输入 2(选择板载显卡相关选项)
输入 X(执行提取操作)
按任意键完成操作并关闭窗口。
提取后的 AMDGopDriver.efi 文件,会存放至路径:Extracted->GOP->对应版本文件夹。
第四步:准备格式转换工具
下载 EfiRom.exe 工具,放置到上述文件同一目录。
第五步:查询设备厂商 ID 与设备 ID
重启主机进入 ESXi 系统,执行以下命令,查询高清音频控制器的厂商 ID与设备 ID:
plaintext
lspci -v | grep -A2 'High Definition Audio Controller'
(配图:命令执行结果)
第六步:格式转换生成 ROM 文件
使用上一步获取的厂商 ID、设备 ID,执行格式转换命令,将 EFI 文件转为可用的 ROM 镜像:
plaintext
EfiRom.exe -f 厂商ID -i 设备ID -e AMDGopDriver.efi -o AMDGopDriver.rom
至此,你已成功自制 VBIOS 镜像与音频 GOP 镜像文件。