1.环境
intel i5-8400
PVE 8.1.3/Linux version 6.5.11-4-pve
虚拟机:debian11/i440fx/seaBIOS
2.直通命令
直通前要了解是想把整个GPU直通给某个虚拟机还是虚拟出多个GPU给多个虚拟机。
虚拟GPU对于11代之前技术是GVT-g,11代以及之后更新为SR-IOV。intel 11代以上cpu目前只能ovmf(BIOS)+i440fx机型能核显直通,q35全网没有成功的。
本文只测试了直通GPU,并没测试虚拟GPU。
2.1修改引导加载程序内核命令行配置文件GRUB
nano /etc/default/grub
将 GRUB_CMDLINE_LINUX_DEFAULT="quiet" 改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
参数说明(按需要添加命令):
1、官方文档:IOMMU (I/O Memory Management Unit)中断重新映射。如果不中断重新映射,将无法使用 PCI 直通。设备分配将失败,并显示“无法分配设备”[设备名称]“:不允许操作”或“找不到中断重新映射硬件,将设备传递到非特权域不安全”错误。【 'Failed to assign device "[device name]": Operation not permitted' or 'Interrupt Remapping hardware not found, passing devices to unprivileged domains is insecure.' error.】
所有使用英特尔处理器和芯片组的系统,如果支持英特尔虚拟化技术定向 I/O (VT-d),但不支持中断重新映射,将看到此类错误。较新的处理器和芯片组(AMD 和英特尔)提供中断重新映射支持;
2、PCIe直通需要主要主要开启虚拟化, Intel叫VT-d,AMD的叫AMD-V(i) ,都需要再主板BIOS里面开启;
3、Intel添加的为intel_iommu=on,AMD添加的为amd_iommu=on;
4、 iommu=pt,官方文档说明:这仅在必要时才启用 IOMMU 转换,适配器不需要使用 DMA 转换到内存,因此可以提高虚拟机管理程序 PCIe 设备(未传递到 VM)的性能。意思就是开了能提高虚拟机调取PCIe的性能,那就开吧。
5、(对于11代之前)i915.enable_gvt=1,官方文档说明:Intel的 GVT-g 驱动程序集成在内核中,启用时加载模块。意思就是,想开启GVT-g的就添加这条,显卡直通的就不要添加了。
2.2保存更改并更新 grub
update-grub
3.修改内核模块
3.1编辑内核模块
nano /etc/modules
#在最后添加以下内容
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
参数说明:
1、PCIe直通启用vfio vfio_iommu_type1 vfio_pci vfio_virqfd
2、GVT-g需再添加kvmgt
3.2更改模块内容后,刷新 initramfs
update-initramfs -u -k all
3.3重启PVE
4.给虚拟机分配GPU
虚拟机->硬件->添加->PCI设备


测试:
输入: ls /dev/dri
输出: by-path card0 card1 renderD128
参考链接:
https://blog.zhangyin.net/1125.html
https://www.bilibili.com/read/cv26863115/?jump_opus=1
Comments NOTHING