Linux i915 SR-IOV 驱动-英特尔核心显卡vGPU教程
-
Linux i915 驱动 (dkms 模块) 支持 SR-IOV 功能 (适用于 Linux 6.8-6.15(-rc5))
警告
此软件包是高度实验性的,仅建议清楚了解操作风险的用户使用。
您需要同时在宿主机和客户机中安装此 dkms 模块!
已测试的内核版本:6.12.10-zen1/6.11.9-arch1/6.10.9-arch1/6.9.10-arch1/6.8.9-arch1 (基于 ArchLinux)
必需的内核参数
intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe
除
intel_iommu=on
外,其他三个参数可以通过modprobe
方式应用,将以下内容添加到/etc/modprobe.d/i915-sriov-dkms.conf
:blacklist xe options i915 enable_guc=3 options i915 max_vfs=7
创建虚拟功能(VF)
echo 1 > /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs
在 Intel UHD Graphics 上最多可创建 7 个 VF
Arch Linux 安装步骤 (测试内核 6.12.6-zen1)
Arch Linux 用户可通过 AUR 获取:i915-sriov-dkms
也可从发布页面下载软件包,使用
pacman -U
安装。PVE 宿主机安装步骤 (测试内核 6.8)
- 安装构建工具:
apt install build-* dkms
- 安装指定版本的内核和头文件:
apt install proxmox-headers-6.8 proxmox-kernel-6.8
(适用于未签名内核) - 从发布页面下载 deb 包
wget -O /tmp/i915-sriov-dkms_2025.05.18_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.05.18/i915-sriov-dkms_2025.05.18_amd64.deb"
- 使用 dpkg 安装 deb 包:
dpkg -i /tmp/i915-sriov-dkms_2025.05.18_amd64.deb
- 安装完成后,需要调整内核命令行参数:编辑
nano /etc/default/grub
,将GRUB_CMDLINE_LINUX_DEFAULT
修改为intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe
,如果已有其他参数则追加 - 执行
update-grub
和update-initramfs -u
更新 grub 和 initramfs - 可选:通过
proxmox-boot-tool
固定内核版本并更新启动配置 - 要启用 VF,必须设置
sysfs
属性。安装sysfsutils
后执行echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
,假设您的 iGPU 位于 00:02 总线。如果不是,请使用lspci | grep VGA
查找 iGPU 所在的 PCIe 总线 - 重启系统
- 系统重新启动后,您应该能在 02:00.1 - 02:00.7 下看到 VF 数量(假设 iGPU 位于 00:02 总线)
- 您可以将 VF 直通给 LXC 或 VM。但切勿将 PF (02:00.0) 直通给 VM,否则会导致所有其他 VF 崩溃
Linux 客户机安装步骤 (测试 Ubuntu 24.04/内核 6.8)
需要在 Linux 客户机中运行相同的驱动程序
-
安装构建工具
apt install build-* dkms linux-headers-$(uname -r) linux-modules-extra-$(uname -r)
-
下载并安装
.deb
包wget -O /tmp/i915-sriov-dkms_2025.05.18_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.05.18/i915-sriov-dkms_2025.05.18_amd64.deb" dpkg -i /tmp/i915-sriov-dkms_2025.05.18_amd64.deb
-
更新内核参数
编辑nano /etc/default/grub
,将GRUB_CMDLINE_LINUX_DEFAULT
修改为i915.enable_guc=3 module_blacklist=xe
,如果已有其他参数则追加示例:
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=3 module_blacklist=xe"
-
完成后,更新
grub
和initramfs
并重启update-grub update-initramfs -u
-
虚拟机重新启动后,执行
dmesg | grep i915
查看内核是否识别到 VF。也可以通过lspci -nnk
检查xe
是否被正确屏蔽,确认 VF 使用的驱动程序 -
可选:安装
vainfo
(apt install vainfo
),执行vainfo
查看 VAAPI 是否识别到 iGPU -
如需 OpenCL 支持:
apt install intel-opencl-icd apt install clinfo clinfo
Windows 客户机 (测试环境:Proxmox 8.3 + Windows 11 24H2 + Intel 驱动 32.0.101.6460/32.0.101.6259)
感谢 resiliencer 在 #225 中的贡献
以下步骤可确保所有驱动版本的兼容性。理论上您可以安装任何版本而不会遇到烦人的
Code 43
错误提取显卡 EFI 固件
- 下载 UEFITools (Windows 使用
UEFITool_NE_A68_win64
,也提供 Linux 和 Mac 版本) - 下载主板 BIOS (我认为任何适用于 Alder/Raptop Lake 桌面平台的 BIOS 都可以)
- 解压 BIOS
- 使用 UEFITools (管理员身份运行) 加载 BIOS (通常是
.cap
文件) - 选择
Action - Search
或使用快捷键ctrl+F
搜索十六进制字符串49006e00740065006c00280052002900200047004f0050002000440072006900760065007200
- 双击搜索结果,BIOS 中匹配项会高亮显示
- 右键点击高亮结果选择
Extract body...
- 保存文件,文件名和扩展名无关紧要。我使用
intelgopdriver_desktop
会保存为intelgopdriver_desktop.bin
- 您可以校验文件哈希:
- Windows 终端命令:
Get-FileHash -Path "path-to-rom" -Algorithm SHA256
- 适用于 UHD730 和 UHD770 桌面版:
131c32cadb6716dba59d13891bb70213c6ee931dd1e8b1a5593dee6f3a4c2cbd
- 适用于 ADL-N:
FA12486D93BEE383AD4D3719015EFAD09FC03352382F17C63DF10B626755954B
- Windows 终端命令:
- 需要将此文件复制到 Proxmox 主机的
/usr/share/kvm
目录。我通过 NAS 上传后使用wget
下载
Windows 虚拟机创建
- 设置机器时,将
CPU
类型设为host
- 提示:在首次设置界面按
Shift+F10
输入OOBE\BYPASSNRO
可跳过 Microsoft 账户设置。虚拟机会重启,您可以选择"我没有 Internet 连接"选项来设置本地账户。或者,您也可以从 Windows VM 中移除网络设备 - 设置完成进入桌面后,启用远程桌面并确保本地账户用户有访问权限。此时可以关闭虚拟机
- 虚拟机关机后,编辑配置文件:
# 直通 02.1 VF,指定 romfile。ROM 路径是相对的 hostpci0: 0000:00:02.1,pcie=1,romfile=Intelgopdriver_desktop.efi,x-vga=1
- 在
Hardware
选项卡中,将Display
设为none
- 启动虚拟机。您将无法通过控制台访问,唯一方式是远程桌面。连接后从 Intel 下载显卡驱动,任何版本都应正常工作
- 安装过程中,当实际安装显卡驱动时可能会出现黑屏。此黑屏将持续到重启虚拟机。建议等待几分钟让其完成操作。您可以通过观察 Proxmox 中的 VM CPU 使用率来判断进度
- 重启后再次通过 RDP 连接。检查设备管理器确认结果。您应该看到 Intel 显卡已安装并正常工作
另见:https://github.com/strongtz/i915-sriov-dkms/issues/8#issuecomment-1567465036
手动安装步骤
- 安装构建工具:
apt install build-essential dkms git
/pacman -S base-devel dkms git
- 安装指定版本的内核和头文件:
apt install linux-headers-$(uname -r)
/pacman -S linux-headers
- 克隆仓库:
git clone https://github.com/strongtz/i915-sriov-dkms.git
- 将模块添加到 DKMS:
dkms add ./i915-sriov-dkms
- 使用 DKMS 安装模块:
dkms install i915-sriov-dkms/2025.05.18
- 完成后,需要调整内核命令行参数:编辑
nano /etc/default/grub
,将GRUB_CMDLINE_LINUX_DEFAULT
修改为intel_iommu=on i915.enable_guc=3 i915.max_vfs=7
,如果已有其他参数则追加 - 执行
update-grub
和update-initramfs -u
/ Arch Linux 使用grub-mkconfig -o /boot/grub/grub.cfg
和mkinitcpio -P
- 可选:使用
sysfsutils
在启动时设置 VF 数量。安装sysfsutils
后执行echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
,假设您的 iGPU 位于 00:02 总线。如果不是,请使用lspci | grep VGA
查找 iGPU 所在的 PCIe 总线 - 重启系统
卸载
dpkg
使用
dpkg -P i915-sriov-dkms
移除软件包pacman
使用
pacman -R i915-sriov-dkms
移除软件包手动
使用
dkms remove i915-sriov-dkms/2025.05.18
移除 dkms 模块致谢
- @strongtz 创建初始 dkms 模块
- @zhtengw 基于 linux-intel-lts (v5.15, v6.1) 重构,支持 v6.1~v6.4,参与 15+ 问题
- @bbaa-bbaa 基于 mainline-tracking linux/v6.12 分支重构,支持 v6.8~v6.13,参与 10+ 问题
- @pasbec 对仓库进行重大重构,支持 (v6.2, v6.5, v6.8),参与 20+ 问题
- @shenwii 支持 (v6.7, v6.9)
- @MotherOfTheGracchi 支持 v6.5.3
- @michael-pptf 多次更新 README.md,参与 20+ 问题
- 安装构建工具: