因为牙膏厂的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的物理核显,也不能勾选所有功能