
没有废话,直接开始!!
打开BIOS中的 VT-d(此功能没有麻烦点赞看看别的)
和SR-IOV(此功能没有不能虚拟多个子显卡)功能
命令行如下:
apt-get update #更新软件列表
apt install git #安装git克隆工具
cd /home
git clone https://github.com/strongtz/i915-sriov-dkms.git #克隆i915驱动

克隆玩后的目录树
命令行如下:
apt install build-* dkms
确认PVE版本:
uname -r

此处版本号:6.8.4-2-pve 后续命令需要与之相同
安装内核和头文件,注意版本号与上图对应:
apt install proxmox-headers-6.8.4-2-pve proxmox-kernel-6.8.4-2-pve
命令行如下:
cd /home/i915-sriov-dkms
dkms add.
#此处注意命令行中的"."

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

命令行如下:
nano /etc/default/grub
修改内容如下:
GRUB_CMDLINE_LINUX_DEFAULT 的值
变更为:quiet intel_iommu=on iommu=pt i915.enable_guc=4 i915.max_vfs=7

注意引号机其他符号均为半角
quiet:这个参数告诉内核在启动时不要显示太多的信息,即静默启动。这样在启动过程中就不会显示过多的内核消息,使得启动过程看起来更简洁。
iommu=pt:这个参数启用了Passthrough模式的IOMMU(输入输出内存管理单元)。IOMMU是一种硬件技术,用于改善虚拟化环境中设备直通的效率,允许虚拟机直接访问物理设备,从而提升性能。pt代表“passthrough”,即直通模式。
intel_iommu=on:这个参数专门针对Intel处理器,启用VT-d技术,即Intel的IOMMU技术。这允许虚拟机直接访问PCI设备,提高了虚拟化的性能和安全性。
i915.enable_guc=4:这个参数与Intel的集成显卡有关。i915是Intel集成显卡的内核驱动程序,enable_guc(Graphics Unit Control)设置为3通常意味着启用了GUC子系统,并且配置为使用所有可用的资源。GUC可以提高显卡的性能,特别是在虚拟化环境中。
i915.max_vfs=7:这个参数同样与Intel的集成显卡有关,它设置了最大虚拟函数(Virtual Functions)的数量。在虚拟化环境中,这可以允许多个虚拟机共享同一个物理显卡,每个虚拟机使用一个虚拟函数。

主板不支持SR-IOV的此步无法激活多个子通道

内核6.1和6.2的需要额外执行以下命令行:
update-grub
update-initramfs -u

安装 sysfsutils,命令行如下:
apt install sysfsutils
然后修改sysfs.conf文件的配置信息
需要先确认显卡的地址通道,命令如下:
lspci | grep VGA

通道地址: 00:02.0 需要与后续命令匹配
执行命令行:
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf

这样就可以通过添加主通道和子通道给不同虚拟机和LXC容器了。
我的主板不支持SR-IOV,所以没有截图了。。。
项目驱动:可在github上搜索strongtz/i915-sriov-dkms
抢救内核小技巧:
dpkg --get-selections |grep kernel #查询内核
apt remove pve-坏内核 #删除对应坏内核
apt install pve-kernel-6.8.12-2-pve #安装对应版本内核
update-grub #更新引导
然后重启。。。