本文介绍在 Proxmox VE 8.1 系统上直通 Intel N100 核显并开启 SR-IOV(Single Root I/O Virtualization)的完整步骤,让多个虚拟机可以共享 GPU 硬件解码能力。

前置条件

  • 硬件:Intel N100 或类似支持 SR-IOV 的处理器
  • 系统:Proxmox VE 8.1+
  • BIOS 中已开启 VT-D(Intel Virtualization Technology for Directed I/O)

一、开启 IOMMU

修改 GRUB 配置

编辑 GRUB 配置文件:

1
nano /etc/default/grub

找到 GRUB_CMDLINE_LINUX_DEFAULT="quiet",修改为:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=7"

参数说明:

参数 说明
intel_iommu=on 开启 Intel IOMMU
i915.enable_guc=3 启用 GuC/HuC 固件,硬件编解码必需
i915.max_vfs=7 最大虚拟功能数量(根据需求调整)

更新 GRUB 并重启

1
2
update-grub
reboot

验证 IOMMU 是否开启

重启后运行:

1
dmesg | grep -e DMAR -e IOMMU

正常输出应包含 DMAR: IOMMU enabled,例如:

1
2
3
[    0.014745] ACPI: DMAR 0x00000000734DC000 000088 (v02 INTEL  EDK2     00000002      01000013)
[ 0.046876] DMAR: IOMMU enabled
[ 0.106676] DMAR: Host address width 39

二、加载 VFIO 内核模块

编辑 /etc/modules

1
nano /etc/modules

添加以下内容:

1
2
3
4
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

这些模块用于将 PCIe 设备 passthrough 给虚拟机时启用 IOMMU 分组转换,提高未使用 PCIe 设备的性能。


三、安装 SR-IOV 驱动

查询内核版本

1
uname -r

示例输出:6.5.11-7-pve

安装内核 Headers

中科大 PVE 镜像源 下载对应版本的 headers 包:

1
2
wget http://mirrors.ustc.edu.cn/proxmox/debian/dists/bookworm/pve-no-subscription/binary-amd64/proxmox-headers-6.5.11-7-pve_6.5.11-7_amd64.deb
dpkg -i proxmox-headers-6.5.11-7-pve_6.5.11-7_amd64.deb

安装依赖

1
apt install -y build-essential git unzip dkms

下载 SR-IOV DKMS 驱动

1
2
git clone https://github.com/strongtz/i915-sriov-dkms.git
mv i915-sriov-dkms /usr/src

修改 DKMS 配置

1
nano /usr/src/i915-sriov-dkms/dkms.conf

按实际内核版本修改:

1
2
PACKAGE_NAME="i915-sriov-dkms"
PACKAGE_VERSION="6.5"

安装驱动

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

验证安装

1
dkms status

正常输出:

1
i915-sriov-dkms/6.5, 6.5.11-7-pve, x86_64: installed

重启

1
reboot

四、配置开机启动 SR-IOV

创建开机脚本,自动创建虚拟功能:

1
2
3
echo '#!/bin/bash' >> /etc/rc.local
echo "echo 7 > /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs" >> /etc/rc.local
chmod +x /etc/rc.local

echo 7 表示开启 7 个 VF(Virtual Function),可根据需求改为其他数值。

验证 SR-IOV

重启后使用 lspci 查看是否出现多个 0000:00:02 设备:

1
lspci | grep 00:02

若能列出多个虚拟功能设备,即代表成功。


五、虚拟机配置要求

通用要求

  • BIOS 类型OVMF (UEFI)
  • 机器类型q35
  • 显卡:设置为 (不使用虚拟显卡,直接直通 VF)

Linux 虚拟机

直通后可使用 renderD128 设备进行硬件编解码。如果未出现该设备,运行以下命令排查:

1
dmesg | grep i915

Windows 虚拟机

  1. 虚拟机配置必须为 OVMF + q35
  2. 显卡设置为
  3. 安装最新 Intel 显卡驱动(以下二选一自行测试):

排错参考

问题 排查方法
IOMMU 未开启 检查 BIOS VT-D 设置,确认 GRUB 参数正确
i915 模块未加载 `lsmod
renderD128 未出现 `dmesg
SR-IOV 设备未创建 检查 /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs 文件读写权限

视频教程