PVE开启12代核显SRIOV虚拟化

默认分类 · 2024-03-04

因为牙膏厂的win驱动有bug,12代的核显直通给win10之后会出现代码43的问题,所以12代的核显需要开启sriov将核显虚拟化,之后再传给虚拟机,简单记下操作流程。

用到的dkms项目地址:
https://github.com/strongtz/i915-sriov-dkms

首先要跟着之前的pve安装初始化开启iommu,添加内核模块那一步有点变动,我安装的是pve 8.1.3,内核版本6.5.11-4,有一个模块就不需要手动添加了:

cat >> /etc/modules << EOF
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd #not needed if on kernel 6.2 or newer
EOF

安装依赖:

apt install git dkms build-*

克隆dkms项目:

export http_proxy=http://192.168.0.170:2081
export https_proxy=http://192.168.0.170:2081
git clone https://github.com/strongtz/i915-sriov-dkms.git

移动位置:

mv i915-sriov-dkms /usr/src/i915-sriov-dkms-6.1
cd /usr/src/i915-sriov-dkms-6.1
这个6.1似乎跟内核版本没关系,写6.1就行
修改dkms配置:
sed -i s/@_PKGBASE@/i915-sriov-dkms/ /usr/src/i915-sriov-dkms-6.1/dkms.conf 
sed -i s/@PKGVER@/6.1/ /usr/src/i915-sriov-dkms-6.1/dkms.conf 

改成下面这个样子:

PACKAGE_NAME="i915-sriov-dkms"
PACKAGE_VERSION="6.1"

装一下对应版本的内核头文件:

apt install proxmox-headers-6.5.11-4-pve

安装dkms:

dkms install -m i915-sriov-dkms -v 6.1 --force

修改内核的启动参数:

vim /etc/default/grub

把这一行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

改成:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"

更新下grub和initramfs:

update-grub && update-initramfs -u -k all

安装sysfsutils,添加配置:

apt install sysfsutils
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf

这里的pci设备号要根据实际改:

Assuming your iGPU is on 00:02 bus. If not, use "lspci | grep VGA" to find the PCIe bus your iGPU is on.

改完重启下pve

新建虚拟机时,要注意几个点:

  • CPU类型选Host
  • 机型选Q35
  • 直通显卡时,不能选择pcie号末尾为0的物理核显,也不能勾选所有功能
    vm-hardware.jpg
    vm-pcie.jpg
    vm-pcie-gpu.jpg
Theme Jasmine by Kent Liao