前言

你是否遇到宿主机无法虚拟化核显/虚拟机无法直通核显?对于宿主机和虚拟机,都需要安装下面的i915驱动并编译进内核(不是安装了就完事,折腾半天,不看readme导致的😭)

下载i915-sriov-dkms驱动&安装

确认内核版本并安装驱动

下载对应的deb包,上传到系统,使用 sudo apt install ./xxx.deb 来安装

编译驱动进内核

安装编译工具 sudo apt install build-* dkms linux-headers-$(uname -r)

检查驱动状态 sudo dkms status

如果显示类似这样 i915-sriov-dkms/2025.12.10: added 带有added字样,可以下一步

编译驱动 sudo dkms install -m i915-sriov-dkms -v $(your_version) ,将$(your_version) 替换为你下载的驱动的版本,如2025.12.10

如果看到 Building module(s)... done.Running depmod.... done. 即编译成功

随后更新引导 sudo update-initramfs -u -k all 并重启

检查 dmesg | grep i915 ,如果有下面样子的东西,驱动就安装成功了

[    2.528552] i915: You are using the i915-sriov-dkms module, a ported version of the i915/xe module with SR-IOV support.
[    2.528553] i915: Please file any bug report at https://github.com/strongtz/i915-sriov-dkms/issues/new.
[    2.528553] i915: Module Homepage: https://github.com/strongtz/i915-sriov-dkms

使用i915或者Xe驱动(建议用i915,Xe通入调用有问题)

对于宿主机

编辑 sudo vim /etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT后的括号内添加

使用i915 intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe

使用Xe驱动

使用Xe intel_iommu=on iommu=pt xe.max_vfs=7 xe.force_probe=${device_id} module_blacklist=i915

Xe 模块目前仅支持 Gen12 (Alder Lake)、Gen13 (Raptor Lake) 和 Gen14 (Raptor Lake Refresh)

请将 ${device_id} 替换为 cat /sys/devices/pci0000:00/0000:00:02.0/device 命令的输出结果

随后更新grub sudo update-grub 重启生效

对于虚拟机

添加内容改为 i915.enable_guc=3 i915.force_probe=* modprobe.blacklist=xe

配置核显

虚拟机已经可以使用了,宿主机还需要做一下配置

设置 sysfs 属性

sudo apt install sysfsutils
sudo echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf

配置虚拟核显数量

echo 2 > /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs 想虚拟几个核显就在echo后写几,范围1<=x<=7

重启,现在你应该能看到原核显下面跟着的虚拟核显了,注意直通的时候别把原核显(第一个)通进去了

结语

弄好了,enjoy it

pve里装飞牛,直通核显,就是这样。为什么不飞牛虚拟机呢,因为飞牛虚拟机设置选项太少了,大小核不能选虚拟机运行在哪个核上,难受得很(2026.1.10)