本文介绍在 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 配置文件:
找到 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 并重启
验证 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 2 3 4
| vfio vfio_iommu_type1 vfio_pci vfio_virqfd
|
这些模块用于将 PCIe 设备 passthrough 给虚拟机时启用 IOMMU 分组转换,提高未使用 PCIe 设备的性能。
三、安装 SR-IOV 驱动
查询内核版本
示例输出:6.5.11-7-pve
到 中科大 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
| i915-sriov-dkms/6.5, 6.5.11-7-pve, x86_64: installed
|
重启
四、配置开机启动 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 设备:
若能列出多个虚拟功能设备,即代表成功。
五、虚拟机配置要求
通用要求
- BIOS 类型:
OVMF (UEFI)
- 机器类型:
q35
- 显卡:设置为
无(不使用虚拟显卡,直接直通 VF)
Linux 虚拟机
直通后可使用 renderD128 设备进行硬件编解码。如果未出现该设备,运行以下命令排查:
Windows 虚拟机
- 虚拟机配置必须为 OVMF + q35
- 显卡设置为
无
- 安装最新 Intel 显卡驱动(以下二选一自行测试):
排错参考
| 问题 |
排查方法 |
| IOMMU 未开启 |
检查 BIOS VT-D 设置,确认 GRUB 参数正确 |
| i915 模块未加载 |
`lsmod |
| renderD128 未出现 |
`dmesg |
| SR-IOV 设备未创建 |
检查 /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs 文件读写权限 |
视频教程