要把 PVE 主机的核显直通给飞牛虚拟机,可以利用 Intel 核显的 SR-IOV 虚拟化技术,让飞牛获得硬件解码能力。
需要注意,这里有两种主流方案:SR-IOV (虚拟化) 和 PCIe (设备独占直通)。
⚙️ 方案对比:SR-IOV vs PCIe 直通
PCIe 设备独占直通: 核显被飞牛虚拟机完全独占,PVE宿主机将无法再使用核显进行显示输出。
SR-IOV (推荐): 核显被虚拟化成多个性能接近物理设备的虚拟功能 (VF) 实例,宿主机和多个虚拟机可以同时、高效、灵活地共享使用核显。
这两种方案在 PVE Web 界面上添加 PCI 设备时的勾选方式不同,请仔细区分。
🎯 方案一:SR-IOV(最推荐,实现宿主机与虚拟机共享核显)
此方案能让核显在宿主机和虚拟机之间共享,是绝大多数 All-in-One 玩家的首选。
1. PVE宿主机配置
首先,通过 lspci -nn | grep VGA 确认核显的 PCI ID (一般是 00:02.0)。然后执行以下步骤:
编辑启动配置:
nano /etc/default/grub添加内核参数: 找到
GRUB_CMDLINE_LINUX_DEFAULT,在引号内加入参数。bash
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=3"intel_iommu=on: 开启 Intel IOMMU 技术,这是设备直通的基础。i915.enable_guc=3: 启用 GuC 和 HuC 固件,这对硬件解码/编码至关重要。i915.max_vfs=3: 设定要创建的虚拟功能 (VF) 数量,建议根据需求设置。
更新引导并重启:
bash
update-grub update-initramfs -u -k all reboot
2. 虚拟化驱动安装 (SR-IOV 核心步骤)
重启后,PVE 宿主机已创建好 VF,你需要安装驱动来管理它们。
安装驱动:
bash
# 安装编译依赖 apt update && apt install build-* git dkms sysfsutils flex bison -y # 克隆并安装 i915-sriov-dkms 驱动 git clone https://github.com/strongtz/i915-sriov-dkms.git cd i915-sriov-dkms ./install.sh # 再次重启以加载驱动 reboot验证 VF 设备: 重启后,执行
lspci | grep VGA应能看到00:02.0(物理设备) 和00:02.1、00:02.2、00:02.3(虚拟设备)。直通时,请选择 虚拟功能 (VF) 设备 (如00:02.1)。虚拟机配置 (关键):
机型 (Machine): 必须选择
q35。BIOS: 选择
OVMF (UEFI),并添加一个 EFI 磁盘。关闭安全启动: 启动虚拟机,在 UEFI 固件设置 (按
ESC进入) 中,找到Device Manager->Secure Boot Configuration,取消勾选Attempt Secure Boot,然后按F10保存。添加 PCI 设备: 虚拟机安装好飞牛系统后,关闭它。在硬件设置中添加核显的 VF 虚拟设备 (如
00:02.1),勾选PCI-Express和ROM-Bar,不要勾选所有功能。关闭虚拟显示: 在硬件设置中将 显示 (Display) 改为 无 (none)。
添加启动参数 (可选): 如果遇到问题,可在虚拟机的配置文件 (
/etc/pve/qemu-server/<VMID>.conf) 中添加args: -set device.hostpci0.addr=02.0(将hostpci0替换为你的 PCI 设备序号)。
🎮 方案二:PCIe 设备独占直通
此方案直接让飞牛虚拟机独占核显,宿主机将失去显示输出能力,适合不需要 PVE 本地显示的场景。
PVE宿主机配置: 在
/etc/default/grub中加入intel_iommu=on,并屏蔽内核中的i915驱动,防止宿主机抢占设备。bash
# 在 /etc/modprobe.d/blacklist.conf 文件中添加以下行 blacklist i915 blacklist snd_hda_intel blacklist snd_hda_codec_hdmi虚拟机配置:
安装飞牛系统时,显示设备保持默认,以便于操作。
系统安装完成后,关闭虚拟机,将显示设备设置为 无 (none)。
添加 物理核显设备 (PCI ID:
00:02.0),并勾选所有功能、PCI-Express和ROM-Bar。
🔧 故障排查
直通后虚拟机无法启动或卡死: 检查虚拟机机型是否为
q35,BIOS 是否为OVMF (UEFI),以及是否已在固件中关闭安全启动 (Secure Boot)。可尝试在虚拟机配置文件中为核显设备添加,rombar=0参数。飞牛系统内看不到
/dev/dri设备: 在飞牛系统内执行ls /dev/dri。如果没有renderD128等设备,说明直通未成功。请回到 PVE 宿主机,用lspci | grep VGA确认已将正确的核显设备 (PF 或 VF) 分配给虚拟机。飞牛影视转码无法启用: 确认飞牛影视应用的转码设置中已启用 Intel QuickSync (QSV) 或 VA-API,并在播放时观察飞牛系统的 GPU 使用率。建议在飞牛命令行执行
sudo apt update && sudo apt install intel-media-va-driver -y安装驱动。Windows 虚拟机直通核显出现 "代码 43" 错误: 这通常与 Windows 驱动或虚拟机配置有关。可以尝试在虚拟机配置中添加
,romfile=参数加载定制的 vBIOS 文件,或确保 CPU 类型为host。BIOS 设置是关键: 确保主板 BIOS 中开启了 VT-d,并将 主显示输出 (Primary Display / Initial Display Output) 设置为 IGPU / CPU Graphics / PEG,同时禁用 CSM,启用 Above 4G Decoding。