pve如何进行SRIOV进行显卡直通
变更内核版本
proxmox8.2默认的内核为proxmox-kernel-6.8.4-2-pve
,但后续的步骤不支持该版本,需进行降级
安装新内核
1 | apt install proxmox-kernel-6.5.13-5-pve |
固定启动内核版本
1 | proxmox-boot-tool kernel pin 6.5.13-5-pve |
重启系统
内核验证
重启后是用uname -a
查看结果是否为Linux pve 6.5.13-5-pve #1 SMP PREEMPT_DYNAMIC PMX 6.5.13-5 (2024-04-05T11:03Z) x86_64 GNU/Linux
,是的话才代表内核切换成功
编译i915-sriov-dkms(仅适用于12代处理器,我用的n100)
编译前基础组件安装
1 | apt install proxmox-header-6.5.13-5-pve |
下载
1 | cd /usr/src |
修改编译配置
1 | cd /usr/src/i915-sriov-dkms-6.5 |
关于为什么要切换git库的版本号,否则编译不会成功。具体可以见issue165与pr164
修改dkms.conf文件,将PACKAGE_NAME和PACKAGE_VERSION改为如下值
1 | PACKAGE_NAME="i915-sriov-dkms" |
编译
1 | dkms install --force -m i915-sriov-dkms -v 6.5 |
结束后运行dkms status
,确认是否有以下结果
1 | i915-sriov-dkms/6.5, 6.5.13-5-pve, x86_64: installed |
有则说明编译成功
配置
修改grub
修改/etc/default/grub
, 给GRUB_CMD_LINE_LINUX
添加intel_iommu=on i915.enable_guc=3 i915.max_vfs=7
使用update-grub
刷新grub
修改modules
修改/etc/modules
, 添加以下四行
1 | vfio |
使用update-initramfs -u
刷新
设置虚拟核显数
安装开机设置工具
1 | apt install sysfsutils |
编辑/etc/sysfs.conf
,加入
1 | devices/pci0000:00/0000:00:02.0/sriov_numvfs = 1 |
其中1代表虚拟出一个核显,主要是n100太弱了,且我只需要虚拟出一个给windows硬解码,左边的key是核显对应的位置。得通过lspci
结合pve web ui才能确定,此处只代表n100的
设置完成后重启
验证
通过web ui可以看到有如下图, 则代表成功
成功后通过web ui给指定的主机加pci设备直通即可,记得先别勾上主GPU,启动后先去装上核显驱动,关机,然后将主gpu勾选上,重新开机,开机后打开任务管理器看到GPU,就说明GPU直通了
注意: 设置主GPU可能会导致pve web控制台黑屏,若只需要硬件加速,不需要图像输出,可以考虑关闭主GPU的选项,原因见wiki,如果出现了43错误大概率也是因为驱动导致的,可以具体看看wiki
注意: 检查机型是否为qe35, 这有利于提高性能