PVE 显卡直通踩坑全记录:从希望到崩溃,再到重新出发

本文记录了作者在 Proxmox VE 上为 Windows 11 虚拟机直通 Intel Iris Xe 显卡的全过程踩坑记录

写在前面

一直想给虚拟机直通显卡,这样在 Windows 11 里跑 AI 推理、视频转码甚至玩游戏都能用上物理 GPU。上周终于动手了,结果…嘛,看完本文你就知道了 😅

硬件环境

  • CPU: Intel Core i7-13700H (笔记本/迷你主机 CPU)
  • 显卡: Intel Iris Xe Graphics (Raptor Lake-P)
  • 宿主机: Proxmox VE 9.1.1
  • 虚拟机: Windows 11 (VM ID: 100)

没错,是移动 CPU,不是桌面级。这为后面的灾难埋下了伏笔…

第一次尝试:自信满满

步骤 1:检查 IOMMU

dmesg | grep -E "DMAR|IOMMU"

输出:

[ 0.603408] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics

好 IOMMU 已启用!✅

步骤 2:查看显卡设备

lspci | grep -iE "vga|3d|display"

输出:

00:02.0 VGA compatible controller: Intel Corporation Raptor Lake-P [Iris Xe Graphics] (rev 04)

设备 ID: 8086:a7a0 ✅

步骤 3:添加 vfio 配置

echo "options vfio-pci ids=8086:a7a0 disable_vga=1" > /etc/modprobe.d/vfio.conf
echo "vfio" > /etc/modules
echo "vfio_pci" >> /etc/modules
update-initramfs -u -k all

步骤 4:添加 hostpci 到虚拟机

qm stop 100
nano /etc/pve/qemu-server/100.conf
# 添加一行
hostpci0: 00:02,pcie=1,x-vga=on

然后 reboot…

结果:系统起不来了 😱

重启后 PVE 完全无法启动,显示器黑屏。吓得我出了一身冷汗——里面还有数据!

救援过程

  1. 接显示器到物理机器
  2. 看到卡在启动画面
  3. 进入 BIOS 检查…
  4. 最后通过 Web UI 的 console 进入系统

具体怎么救活的我也说不清楚,反正就是反复重启终于进去了。

第二次尝试:小心谨慎

第一步:启用 IOMMU

编辑 /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

然后 update-grub 和 reboot。

第二步:检查驱动状态

lspci -nnk -d 8086:a7a0

输出:

00:02.0 VGA compatible controller [0300]: Intel Corporation Raptor Lake-P [Iris Xe Graphics] [8086:a7a0] (rev 04)
 DeviceName: Onboard - Video
 Kernel driver in use: i915  <-- 问题在这!
 Kernel modules: i915, xe

问题找到了:显卡被 i915 驱动占用,不是 vfio-pci!

第三步:尝试解绑

echo "0000:00:02.0" > /sys/bus/pci/drivers/i915/unbind
echo "0000:00:02.0" > /sys/bus/pci/drivers/vfio-pci/bind

结果:

-bash: echo: write error: Invalid argument

失败!iGPU 解绑比独立显卡难得多。

关键发现:知乎文章

在查了大量资料后,找到一篇 PVE 显卡直通实战文章,里面提到了一个关键参数:

initcall_blacklist=sysfb_init

这个参数的作用是防止宿主机占用显卡帧缓冲区

更新 grub 配置

nano /etc/default/grub
# 改成
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init"

update-grub
reboot

目前状态:等待测试

文章发布时还在测试中。如果成功了会更新结果。

总结:移动 CPU 的痛

  1. 13700H 是移动 CPU,BIOS 对 VT-d 支持不完整
  2. iGPU 集成在 CPU die 上,无法像独立显卡那样解绑
  3. IOMMU 组信息为空,说明隔离不完整
  4. 大多数迷你主机/NUC 的 BIOS 锁定了很多高级选项

建议

  • 如果要搞显卡直通,首选桌面级 CPU + 独立显卡
  • 移动 CPU (笔记本/迷你机) 的 iGPU 直通成功率很低
  • 实在需要,可以考虑外接显卡(Thunderbolt)

下篇预告:「从零搭建开发环境:我的效率工具箱」

本文耗时 2 小时编辑排版 🦀