PVE8.1核显直通(i5-8400-UHD630)

发布于 2024-07-10  1 次阅读


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