在 Proxmox VE 上进行独立显卡直通(GPU passthrough)操作,可以将物理显卡直接分配给虚拟机,从而提升虚拟机的图形性能。

前提条件
硬件支持:确保你的 CPU 和主板支持 IOMMU(Intel VT-d 或 AMD-Vi)
BIOS 设置:在 BIOS 中启用 IOMMU 和相关设置(Intel VT-d 或 AMD-Vi)

硬件环境:
CPU: AMD Ryzen 5 3600X
Motherboard: MSI MAG B550M
GPU: Nvidia 1650S

1.更改BIOS设置

重置BIOS为默认设置
Settings\Save & Exit\Restore Defaults

关闭S/3Modern Standby Support(可选)
Settings\Advanced\ACPI Settings\S/3Modern Standby Support [Disabled]

设置Initiate Graphic Adaptor为外置显卡
Settings\Advanced\Initiate Graphic Configuration\Initiate Graphic Adaptor [PEG]

设置Integrated Graphics为Force Mode
Settings\Advanced\Initiate Graphic Configuration\Integrated Graphics [Force]

打开主板IOMMU
Overclocking\Advanced CPU Configuration\AMD CBS\IOMMU [Enabled]

打开CPU虚拟化
Overclocking\Advanced CPU Configuration\SVM Mode [Enabled]

2.启用 IOMMU

编辑 /etc/default/grub 文件,找到 GRUB_CMDLINE_LINUX_DEFAULT 行,并添加

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction"

3.更新 GRUB 配置

update-grub

4.编辑内核模块配置

创建或编辑 /etc/modules 文件,添加以下内容:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

5.获取设备 ID:

lspci -nn | grep -i vga

示例:
2b:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU116 [GeForce GTX 1650 SUPER] [10de:2187] (rev a1)

2b:00.0            为PCI ID
10de:2187          为显卡设备ID

6.绑定显卡到 VFIO 驱动程序

编辑 /etc/modprobe.d/vfio.conf 文件,添加你的显卡设备 ID:

options vfio-pci ids=10de:2187

7.禁用默认驱动程序

编辑或创建 /etc/modprobe.d/pve-blacklist.conf 文件,添加以下内容以禁用默认的显卡驱动程序:

blacklist nouveau
blacklist nvidia
blacklist radeon
blacklist amdgpu

8.更新 initramfs

update-initramfs -u -k all

9.重启系统

reboot