在前几篇文章中,我们已经介绍了天钡WTR PRO 5825U的开箱BIOS设置以及硬盘直通等教程。本文将继续探讨天钡WTR PRO 5825U在PVE虚拟机中的显卡直通设置,这是整个过程中最具挑战性的一环。经过xiaoz两天的反复尝试,最终成功实现了这一配置。

dfe8a19976cc6e3d.png

> 注意:此教程不适合新手,同时可能存在一定风险,请务必备份重要数据后再操作,相关风险由读者自行承担!!!

环境准备


* 硬件:天钡WTR PRO 5825U
* PVE版本:8.3.0
* 虚拟机操作系统:OpenMediaVault 7.x

> 注意,不同PVE版本步骤有所不同,PVE 8.x版本已经简化了显卡直通的流程,所以此教程仅适合PVE 8.x版本的用户!

设置BIOS


先参考教程:天钡WTR PRO 5825U BIOS设置:来电自启与硬件直通配置IOMMU参数启用。

创建虚拟机


PVE在创建虚拟机的时候,某些设置参数需要特别注意,否则可能无法完成显卡直通。

在【PVE虚拟机 - 系统】选项中,请务必按照以下参数配置:

* 机型:q35
* BIOS:OVMF
* 勾选:添加 EFI 磁盘
* 勾选:添加TPM

d26b42d64024449c.png

在【PVE虚拟机 - CPU】选项中,类别建议选择host以获得更好的性能。

746f6e61154bfb9e.png

其它没有什么注意的,根据自身情况分配内存、磁盘等即可。

安装虚拟机系统


xiaoz使用的OpenMediaVault 7.x虚拟机系统,根据指引通过控制台正常完成操作系统安装即可。

调整虚拟机BIOS


OpenMediaVault安装完毕后会无法启动,原因是找不到引导。这时候我们需要下载天钡WTR PRO 5825U的引导固件,并使用对应的固件才能启动。

* 天钡WTR PRO 5825U固件下载地址:https://soft.xiaoz.org/#/source/WTR_PRO_5825U/5825.rom?type=file

下载后将固件放到PVE的/usr/share/kvm目录下,或者直接进入这个目录下载固件也可以。

# 进入PVE固件目录
cd /usr/share/kvm
# 下载固件
wget https://soft.xiaoz.org/source/WTR_PRO_5825U/5825.rom


然后将虚拟机完全关闭,并找到虚拟机配置文件/etc/pve/qemu-server/VMID.conf(VMID是你虚拟机ID编号),然后添加以下内容:

romfile=5825.rom


然后开启虚拟机,开启后在控制台按ESC进入虚拟机的BIOS模式,依次进入 【Device Manager > Secure Boot Configuration > Attempt Secure Boot】,取消勾选**Attempt Secure Boot**,F10保存后,回到BIOS初始界面后选择RESET重启,这样就可以正常进入操作系统了。

设置虚拟机核显(GPU)直通


**修改引导配置**

在PVE中编辑/etc/default/grub这个文件,找到GRUB_CMDLINE_LINUX这一行,添加amd_iommu=on参数值,如下图。

6740d6e8e3b69458.png

更新 GRUB 并重启宿主机:

update-grub
reboot


**验证**

输入下面的命令验证 IOMMU 是否已启用:

dmesg | grep -e DMAR -e IOMMU


将输出结果复制给AI判断IOMMU是否启用成功。

490789616996478f.png

继续验证 IOMMU 中断重映射是否已启用,输入下面的命令:

dmesg | grep 'remapping'


可以看到类似:AMD-Vi: Interrupt remapping enabled这样的结果,说明是ok的。

98404e409740982f.png

**阻止宿主机加载 GPU 的默认驱动**

输入下面的命令:

echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf


**修改虚拟机设置**

输入命令lspci |grep VGA找到GPU的ID编号,比如下面的04:00.0就是GPU编号,复制并记录下来。

2ba5009ac2359fc8.png

继续找到虚拟机配置文件/etc/pve/qemu-server/VMID.conf(VMID是你虚拟机ID编号),将:

romfile=5825.rom


修改为:

hostpci0: 04:00.0,pcie=1,x-vga=1,romfile=5825.rom


* hostpci0:这个0,可以是任意没有使用的数字
* 04:00.0对应你GPU编号
* pcie=1:启用 PCI Express(PCIe)功能。
* x-vga=1:启用 X-VGA 功能,允许虚拟机将 GPU 用作主显示设备。

然后在PVE WEB控制台继续编辑虚拟机配置,将【硬件 - 显示】那里设置为**无**

94f9e6f475c76564.png

最后停止虚拟机并重新启动。

验证


虚拟机重新启动成功后,可以输入下面的命令来检查GPU加载和内核信息:

# 检查GPU是否加载
lsmod | grep amdgpu
# 检查内核信息
dmesg | grep amdgpu


可以将结果复制给AI解读。

同时检查ls /dev/dri/renderD128这个文件是否存在,如果不存在,大概率没成功。

继续安装radeontop这个工具,该工具可以查看系统的AMD GPU使用情况。

apt install radeontop


尝试将Jellyfin开启硬件解码,播放视频并使用radeontop工具监控GPU情况,可以看到下面的截图。

b59068bbb2b05d6c.png

Graphics pipe:表示 GPU 图形处理单元的繁忙程度。18.33%表示GPU图形管线有18.33%的占用率。说明GPU正在工作中。

228M / 2023M VRAM 11.29%:

* 228M: 当前使用的显存(VRAM)大小。
* 2023M: 显存的总大小。
* 11.29%: 显存的占用率。

1.25G / 1.33G Memory Clock 94.01%:

* 1.25G: 当前的显存频率。
* 1.33G: 显存的最大频率。
* 94.01%: 显存频率的占用率。

总结


1. BIOS开启IOMMU
2. PVE引导里面启用IOMMU(未测试PVE8这个是否是必须)
3. 创建虚拟机的时候注意机型为q35, BIOS:OVMF,添加EFI磁盘和勾选TPM
4. 注意修改虚拟机的:/etc/pve/qemu-server/VMID.conf,添加5825.rom引导固件
5. 虚拟机的BIOS需要将Attempt Secure Boot取消勾选,否则无法启动
6. 找到AMD GPU ID,然后再次修改 /etc/pve/qemu-server/VMID.conf 添加直通
7. 使用radeontop监控GPU情况

以上内容仅适用于天钡WTR PRO 5825U PVE8系统,其他硬件可能无法使用。此文部分内容参考了:

* PVE下安装飞牛OS核显直通教程-天钡WRT PRO 5825U
* PCI Passthrough