先安装所需要的环境

apt install -y  build-* git unzip dkms

开始配置 i915-sriov

KERNEL=$(uname -r); KERNEL=${KERNEL%-pve}
apt install pve-headers-$(uname -r)
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd ~/i915-sriov-dkms
cp -a ~/i915-sriov-dkms/dkms.conf{,.bak}
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/"@PKGVER@"/"'"$KERNEL"'"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/ -j$(nproc)//g' ~/i915-sriov-dkms/dkms.conf

然后确认一下修改是否有问题

cat ~/i915-sriov-dkms/dkms.conf

开始编译dkms模块

dkms add .
cd /usr/src/i915-sriov-dkms-$KERNEL
dkms status
dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force -j 1
dkms status

确认没报错然后修改/etc/default/grub iGPU 最大可以分配7个

cp -a /etc/default/grub{,.bak}
sudo sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"' /etc/default/grub
update-grub
update-initramfs -u -k all
apt install sysfsutils -y

修改/etc/modules, 增加

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

重启设备查看是否成功

lspci | grep VGA
dmesg | grep i915

并根据需要修改PCIe总线号添加到 /etc/sysfs.conf
我这里只分配了3个

devices/pci0000:00/0000:00:02.0/sriov_numvfs = 3

最后 reboot 测试即可

核显调用配置如下


断流问题

集成的I226,实测在某些场景仍会存在断流现象,关闭TSO之后解决。具体方法为:

创建服务文件

> nano /etc/systemd/system/off_tso.service

内容如下

[Unit]
Description=Turn off TSO for NIC

[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -K enp2s0 tso off 
ExecStart=/usr/sbin/ethtool -K enp3s0 tso off
ExecStart=/usr/sbin/ethtool -K enp4s0 tso off
ExecStart=/usr/sbin/ethtool -K enp5s0 tso off
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

启用并设为自动启动

> systemctl enable --now off_tso.service
> systemctl daemon-reload