本来想集成到前面的文章,但是被网上一些文章误导从而浪费了3H之后决定还是单开一篇专门说说PVE8.3.1开启核显虚拟化的过程。所以建议大家还是参考更有价值的唯一的官方指南 https://github.com/strongtz/i915-sriov-dkms
交代一下背景:
发文日期2025年2月14日,以下所有操作均基于当前日期并有效执行!
PVE内核版本:6.8.12-4-pve
建议操作前更新一次源
apt update -y
安装必要的软件包
apt install build-* dkms git sysfsutils -y
安装所需版本的内核和头文件
apt install proxmox-headers-$(uname -r) proxmox-kernel-$(uname -r)
以下建议在home目录执行,所以现切换到home目录
cd ~
拉取最新i915-sriov-dkms
git clone https://github.com/strongtz/i915-sriov-dkms.git
进入i915-sriov-dkms目录
cd ~/i915-sriov-dkms
将当前目录中的内核模块添加到DKMS
dkms add .
添加完成后可以在/usr/src/目录看到已经添加进来的内核模块i915-XXXX
编译并安装该模块
dkms install i915-sriov-dkms/2025.02.03
执行以下命令,确认显卡ID是不是00:02.0
lspci | grep VGA
确认后,调整内核命令行
nano /etc/default/grub
把GRUB_CMDLINE_LINUX_DEFAULT 的参数值改成 intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe
这里要注意,如果要虚拟成7个核显,则i915.max_vfs=7;如果要虚拟成3个核显,则i915.max_vfs=3
更新grub和initramfs
update-grub
update-initramfs -u
建议再补充执行一次
pve-efiboot-tool refresh
启用VFs
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf#注意,这里的sriov_numvfs = X"必须与上一步的i915.max_vfs=X 数值相同
如果你的显卡ID不是00:02.0,则也需要做相应的调整
重启PVE后执行
lspci | grep VGA
你就可以看到虚拟化的核显已经出现
最后,你就能通过VFs到LXCs或VMs。但是,切勿将PF (02:00) 传递给VM,这会使所有其他vf崩溃。