1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1 initcall_blacklist=sysfb_init pci=assign-busses pcie_acs_override=downstream,multifunction"

update-grub

nano /etc/modules

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

// 如不显示,则硬件设备不支持,可以使用以下命令允许不安全的中断
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
// 如果是N卡还需要加入下面的配置到kvm.conf
echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf

// blacklist
echo "blacklist radeon" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/pve-blacklist.conf

// 为显卡含子设备的 id 开启 VFIO
lspci -v
lspci -n -s 03:00
03:00.0 0300: 1002:731f (rev c1)
03:00.1 0403: 1002:ab38
lspci -n -s 00:02
00:02.0 0380: 8086:9bc5 (rev 05)
echo "options vfio-pci ids=1002:731f,1002:ab38 disable_vga=1"> /etc/modprobe.d/vfio.conf
update-initramfs -u
reboot

// config
nano /etc/pve/qemu-server/101.conf
qm set 102 -args "host,-hypervisor,+kvm_pv_unhalt,+kvm_pv_eoi,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,kvm=off,hv_vendor_id=intel"
qm set 102 -balloon "0"

Untitled

Untitled

vGPU

Untitled

Untitled

远程桌面优化设置

配置 RemoteFX 硬件加速

此时,该虚拟机虽然有了核显 vGPU ,但是远程桌面连接并未使用,我们需要手动在该虚拟机开启 RemoteFX 硬件加速,使远程桌面连接通过 WDDM 调用核显 vGPU 实例[14]

打开命令提示符,输入 gpedit.msc 开启组策略,在左侧依次进入【计算机配置】——【管理模板】——【Windows组件】——【远程桌面服务】——【远程桌面会话主机】——【远程会话环境】。

然后,如下图所示进行设置:

https://pic3.zhimg.com/80/v2-e2119932ba44d462c3b290eef8e5cae2_720w.webp

继续打开【RemoteFX for Windows Server 2008 R2】,按下图设置:

https://pic1.zhimg.com/80/v2-b7abc0abc9ab08576bd438b2f9357260_720w.webp

注意:有一些项目在左下角可以设置具体的选项,如【使用 RemoteFX 时优化视觉体验】,可以选择最高。

https://pic2.zhimg.com/80/v2-acc647a2b081b64cde47972e281bdb41_720w.webp

另外,我们回到上上一级菜单的【连接】——【选择 RDP 传输协议】,按图设置:

https://pic4.zhimg.com/80/v2-9b0715eee0928bfbf3017f0e3df5b9ab_720w.webp

这么做可以让大部分流量以 UDP 传输

全部配置完成后,在命令提示符输入 gpupdate /force 以刷新组策略

到此,核显虚拟机配置完成。

需要补充的是,此后通过远程桌面连接这台虚拟机时,要将体验设置为 LAN :

常见问题

由于Vega和Navi GPU缺少Function Level Reset(FLR)的支持,会导致虚拟机关机后显卡睡死而无法重新启动虚拟机。解决方法是卸载显卡和板载声卡后,休眠物理机,然后重新扫描pcie设备,可以制作如下脚本:

1
2
3
4
echo "1" > /sys/bus/pci/devices/0000\:03\:00.0/remove
echo "1" > /sys/bus/pci/devices/0000\:03\:00.1/remove
echo mem > /sys/power/state
echo "1" > /sys/bus/pci/rescan

在第三行执行后虚拟机会进入休眠,此时需要手动按下开关恢复运行,这对运维有了一定的阻碍。另一个方法是给kernel打补丁,链接留在这里本文暂不展开。

https://forum.level1techs.com/t/navi-reset-kernel-patch/147547

PVE虚拟机核显直通及返回钩子脚本

Labradors

Proxmox VE(PVE)直通显卡 踩坑经验 - 企鹅大大的博客

一边原神一边 galgame :同时独显直通和核显虚拟化