Proxmox VE (PVE) 直通显卡 踩坑经验

官方 WIKI:https://pve.proxmox.com/wiki/Pci_passthrough

配置:UH630 + 英伟达 GT1030

Grub 修改

编辑文件 /etc/default/grub

#编辑 /etc/default/grub

nano /etc/default/grub

#找到

GRUB_CMDLINE_LINUX_DEFAULT=”quiet“

#Intel 用户修改为

GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_iommu=on pcie_acs_override=downstream video=vesafb:off video=efifb:off”

#AMD 用户修改为

GRUB_CMDLINE_LINUX_DEFAULT=”quiet amd_iommu=on pcie_acs_override=downstream video=vesafb:off video=efifb:off”

这里说一下为什么会需要拆分 iommu pcie_acs_override=downstream

像我这块主板,一二槽同时插上时会共享带宽,如果不拆分 iommu,当两个设备同时直通,其中一个就会显示占用

img

video=vesafb:off video=efifb:off :禁止启动和 vesa 驱动和 efi 启动的显卡

VT-d

检查 VT-d 是否开启

#执行

dmesg | grep -e DMAR -e IOMMU

#若无输出,请在 BIOS 内开启 VT-d

#更新 grub

update-grub

加载 vifo 模块

#编辑 /etc/modules

nano /etc/modules

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

找到设备的 hostpci

img

#找到设备的 hostpci

lspci

#01:00.0 为显卡本身视频输出

#01:00.1 这是显卡自带的声卡

#查看设备的 Device ID

lspci -n -s 01:00

## 输出(将 Device ID 替换成你自己的)

#01:00.0 0300: 10de:1381 (rev a2)

#01:00.1 0403: 10de:0fbc (rev a1)

#将设备加入进 vfio

echo “options vfio-pci ids=10de:1381,10de:0fbc disable_vga=1” > /etc/modprobe.d/vfio.conf

## 这里我还直通了核显

##echo “options vfio-pci ids=ids=8086:1234” > /etc/modprobe.d/vfio.conf

#防止在 win10 中显卡代码 43

echo “options kvm ignore_msrs=1 report_ignored_msrs=0” > /etc/modprobe.d/kvm.conf

#信任设备

echo “options vfio_iommu_type1 allow_unsafe_interrupts=1” > /etc/modprobe.d/iommu_unsafe_interrupts.conf

#看看设备需要用到什么驱动

lspci -vvv -s 01:00

## 可以看到 01:00.0 这个设备需要 nvidiafb, nouveau

# Kernel driver in use: vfio-pci

# Kernel modules: nvidiafb, nouveau

##01:00.1

# Kernel driver in use: vfio-pci

# Kernel modules: snd_hda_intel

因此我们把上面要的驱动都禁了

禁用驱动

将要禁用的驱动加入 /etc/modprobe.d/pve-blacklist.conf

#编辑 blacklist

nano /etc/modprobe.d/pve-blacklist.conf

# This file contains a list of modules which are not supported by Proxmox VE

# nidiafb see bugreport https://bugzilla.proxmox.com/show_bug.cgi?id=701

blacklist nvidiafb

blacklist nouveau

blacklist nvidia

blacklist snd_hda_intel

#如果不想直通核显,这个可以不用

blacklist snd_hda_codec_hdmi

blacklist i915

#AMD Driver

blacklist radeon

更新配置

#更新 initramfs

update-initramfs -u

#若输出 EFI sync 什么的没有,不用理会,那是由于 pve 安装方式引起的

#重启

reboot

直通设备

在虚拟机中添加 PCI 设备即可,如图,主 GPU 可勾可不勾,Linux 下多 GPU 可能需要自己配置

可以通过 dmesg 查看是否有错误
比如 No more image in the PCI ROM
那你可能需要按上述操作把核显驱动也禁了

img

img