Proxmox VE 8 核显直通折腾记:从花屏无声到完美出声
折腾了一整天,终于把 PVE 8.4 下 Intel i5-1240P 核显直通搞定了:画面正常、HDMI 声音正常、群晖人脸识别正常。同时郑重提醒:PVE 9 已经不支持核显完美直通了,还在用 PVE 9 的朋友建议尽快降回 PVE 8。 这篇文章把踩过的坑和最终的解决方案完整记录下来,希望能帮后来者少走弯路。
(下面接着前面的正文即可,这一整篇可以直接复制到博客发布。)
一、问题背景
设备配置:
- CPU:Intel i5-1240P(12 核 16 线程,Alder Lake-P,Iris Xe 核显)
- 系统:Proxmox VE 8.4
- 目标:核显直通给 Windows 10 和群晖,实现画面输出 + HDMI 声音 + 人脸识别加速
在 PVE 8.4 上配置核显直通后,出现的症状:
- 虚拟机启动花屏,要重启第二次才正常
- 画面正常但没有声音,喇叭显示红叉
- 报错
legacy IGD assignment requires VGA mode to be 'none' - 驱动安装报错,设备管理器显示 Code 43
二、根本原因:QEMU 9.2 移除了 Legacy 模式支持
这是整个问题的核心原因。
- PVE 8.3.5 及更早:自带 QEMU 9.1.x,支持
legacy-igd=1,核显直通正常 - PVE 8.4:自带 QEMU 9.2.0,移除了 Legacy 模式支持,
legacy-igd=1失效 - PVE 9:自带 QEMU 11.x,问题更严重,直接报错说不支持 12 代核显 Legacy 模式
用命令确认你的 QEMU 版本:
kvm --version如果显示 9.2.0 或更高,那你的核显直通大概率会失败。
三、解决方案:降级 QEMU 到 9.1.2-3
1. 添加 PVE 8.3 的软件源
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-8.3.list
apt update2. 降级 QEMU
apt install pve-qemu-kvm=9.1.2-33. 锁定版本(关键!)
apt-mark hold pve-qemu-kvm这一步非常重要,否则系统升级时会把 QEMU 升回 9.2.0,直通立即失效。
4. 验证
kvm --version
apt-mark showholdkvm --version 应显示 9.1.2,apt-mark showhold 应包含 pve-qemu-kvm。
四、完整直通配置
1. GRUB 参数
编辑 /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction"然后执行:
update-grub2. VFIO 模块
编辑 /etc/modules,加入:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd3. 屏蔽宿主机驱动
编辑 /etc/modprobe.d/pve-blacklist.conf:
blacklist i915
blacklist xe
blacklist snd_hda_intel
options vfio_iommu_type1 allow_unsafe_interrupts=14. 绑定 vfio-pci
先查核显和声卡的 PCI ID:
lspci -nn | grep -E "VGA|Audio"我的输出是 8086:46a6(核显)和 8086:51c8(声卡),创建 /etc/modprobe.d/vfio.conf:
options vfio-pci ids=8086:46a6,8086:51c85. 更新并重启
update-initramfs -u -k all
reboot6. 验证绑定成功
lspci -nnk -s 00:02.0
lspci -nnk -s 00:1f.3两个都应显示 Kernel driver in use: vfio-pci。
五、虚拟机配置
关键是使用老高为 1240P 制作的二合一 ROM(1240P_vbios.rom),只挂在核显上,声卡纯直通。
agent: 1
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on
bios: ovmf
boot: order=scsi0
cores: 12
cpu: host
efidisk0: local:102/vm-102-disk-0.qcow2,efitype=4m,pre-enrolled-keys=1,size=528K
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=1240P_vbios.rom
hostpci1: 0000:00:1f.3
ide0: local:iso/virtio-win.iso,media=cdrom,size=856810K
machine: pc-i440fx-8.0
memory: 16384
name: Win10-AIO
net0: virtio=BC:24:11:28:E2:60,bridge=vmbr0
numa: 0
onboot: 1
ostype: l26
scsi0: local:102/vm-102-disk-1.qcow2,cache=writethrough,iothread=1,size=120G,ssd=1
scsihw: virtio-scsi-single
sockets: 1
vga: none关键点:
machine: pc-i440fx-8.0—— 必须是 i440fx,不能用 Q35hostpci0带legacy-igd=1—— 启用 Legacy 直通模式hostpci1不带romfile—— 二合一 ROM 已经包含声卡所需的 GOPvga: none—— 必须,否则报legacy IGD assignment requires VGA mode to be 'none'ostype: l26—— 设为 Linux 提高直通稳定性
六、ROM 文件说明
- 放在
/usr/share/kvm/目录 - 12 代移动端推荐使用 1240P 专用二合一 ROM,不要用通用的
gen12_igd.rom+gen12_gop.rom(通用版有 88 个 GOP 互相干扰,会导致花屏和无声) - 如果没有专用 ROM,可以从自己机器的 BIOS 里提取
IntelGopDriver.efi,用EfiRom生成
七、HDMI 声音问题
直通后可能一开始没声音,这是正常现象。HDMI 音频的初始化需要虚拟机启动、核显驱动加载、电视握手三者时序对齐。
解决方法:多重启几次虚拟机。一旦初始化成功,声音就会稳定出现,之后不用再管。
八、群晖核显直通
群晖直通核显用于 Photos 人脸识别,配置和 Windows 类似,但需要:
- 群晖虚拟机
hostpci0加,legacy-igd=1 - 显示设为
none - 进入群晖 SSH 验证:
ls /dev/dri,出现card0和renderD128即成功
九、重要提醒
备份“三大件”:
- ROM 文件(
1240P_vbios.rom) - 虚拟机配置(
102.conf) - QEMU 降级包(
pve-qemu-kvm_9.1.2-3_amd64.deb)
- ROM 文件(
- 不要用 PVE 界面的“停止”按钮关机,会恢复不过来,用
qm shutdown优雅关机 - 不要开 Windows 的休眠、睡眠,直通模式下容易出问题
- 不要再升级 QEMU,任何尝试升级都可能让直通重新失效
- 内核升级要谨慎:升级后重启 PVE 可能影响直通,出问题就回退旧内核
十、总结
核显直通问题的核心就是一句话:
PVE 8.4 自带的 QEMU 9.2 移除了 Legacy 模式支持,必须降级到 9.1.2-3 并锁定。
排查顺序:
kvm --version看 QEMU 版本- 如果是 9.2+,降级 QEMU 到 9.1.2-3
apt-mark hold pve-qemu-kvm锁定- 使用匹配 CPU 型号的专用 ROM
- 多重启几次等 HDMI 音频初始化
觉得内容不错?我要