在前几篇文章中,我们已经介绍了天钡WTR PRO 5825U的开箱、BIOS设置以及硬盘直通等教程。本文将继续探讨天钡WTR PRO 5825U在PVE虚拟机中的显卡直通设置,这是整个过程中最具挑战性的一环。经过xiaoz两天的反复尝试,最终成功实现了这一配置。
注意:此教程不适合新手,同时可能存在一定风险,请务必备份重要数据后再操作,相关风险由读者自行承担!!!
环境准备
- 硬件:天钡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
在【PVE虚拟机 - CPU】选项中,类别建议选择host
以获得更好的性能。
其它没有什么注意的,根据自身情况分配内存、磁盘等即可。
安装虚拟机系统
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
参数值,如下图。
更新 GRUB 并重启宿主机:
update-grub
reboot
验证
输入下面的命令验证 IOMMU 是否已启用:
dmesg | grep -e DMAR -e IOMMU
将输出结果复制给AI判断IOMMU是否启用成功。
继续验证 IOMMU 中断重映射是否已启用,输入下面的命令:
dmesg | grep 'remapping'
可以看到类似:AMD-Vi: Interrupt remapping enabled这样的结果,说明是ok的。
阻止宿主机加载 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编号,复制并记录下来。
继续找到虚拟机配置文件/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控制台继续编辑虚拟机配置,将【硬件 - 显示】那里设置为无
最后停止虚拟机并重新启动。
验证
虚拟机重新启动成功后,可以输入下面的命令来检查GPU加载和内核信息:
# 检查GPU是否加载
lsmod | grep amdgpu
# 检查内核信息
dmesg | grep amdgpu
可以将结果复制给AI解读。
同时检查ls /dev/dri/renderD128
这个文件是否存在,如果不存在,大概率没成功。
继续安装radeontop
这个工具,该工具可以查看系统的AMD GPU使用情况。
apt install radeontop
尝试将Jellyfin开启硬件解码,播放视频并使用radeontop
工具监控GPU情况,可以看到下面的截图。
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%: 显存频率的占用率。
总结
- BIOS开启IOMMU
- PVE引导里面启用IOMMU(未测试PVE8这个是否是必须)
- 创建虚拟机的时候注意机型为
q35
, BIOS:OVMF,添加EFI磁盘和勾选TPM - 注意修改虚拟机的:/etc/pve/qemu-server/VMID.conf,添加
5825.rom
引导固件 - 虚拟机的BIOS需要将
Attempt Secure Boot
取消勾选,否则无法启动 - 找到AMD GPU ID,然后再次修改
/etc/pve/qemu-server/VMID.conf
添加直通 - 使用
radeontop
监控GPU情况
以上内容仅适用于天钡WTR PRO 5825U PVE8系统,其他硬件可能无法使用。此文部分内容参考了: