一键登录 更安全快捷
邮箱登录
我已阅读并接受 用户协议 隐私政策

VMware ESXi环境下AMD锐龙核显(iGPU)直通配置教程

前段时间,我与文超(多款 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 镜像文件。


用户留言 User Comments