# GPU 直通前置核查与数据看板(2026-10-30) ## 硬件事实(SSH 到宿主机实测,修正旧文档误判) 宿主机 `starhe`(192.168.1.51,pve-manager/9.2.21,内核 7.0.2-6-pve): ```text 00:02.0 VGA : Intel 4th Gen Core (Haswell) iGPU [8086:0416] 驱动 i915(宿主显示用,保留) 01:00.0 3D : NVIDIA GM204M [GeForce GTX 965M] [10de:13d9] 驱动 nouveau(直通前需解绑) 两者 Subsystem 均为 CLEVO/KAPOK [1558:6557] ``` - 机身是 CLEVO 准系统(外形像台式机箱),GPU 是移动版 GM204M/965M—— 此前"笔记本"与"IOMMU Group 2 独占"的记载部分有误,以本页为准。 - HDMI 音频功能(01:00.1)不存在,无需处理。 - **IOMMU 实测已启用**(/sys/kernel/iommu_groups 有 15 组,DMAR 生效; 内核 6.8+ 默认开启,不需要显式 intel_iommu=on)。 - GPU 位于 **IOMMU 组 2**,组内设备:`0000:00:01.0`(root port)+ `0000:01:00.0`(GPU), 直通需整组传入。 - VM 100:q35 + SeaBIOS、4 核 8G、win10,未配置 hostpci。 ## 明日直通操作单(按序执行) 1. 约窗口:宿主机重启会让全部 VM(100/101/102)停机。 2. 解绑 nouveau:`/etc/modprobe.d/blacklist.conf` 加 `blacklist nouveau`, `update-initramfs -u`,重启宿主机(重启后 `lsmod | grep nouveau` 应为空)。 3. 绑 vfio:`/etc/modprobe.d/vfio.conf` 写 `options vfio-pci ids=10de:13d9` (含 root port 的话用 QEMU 参数整组传),重启后确认 `lspci -nnk -s 01:00.0` 显示 `Kernel driver in use: vfio-pci`(看板会自动变绿)。 4. 挂载:`qm set 100 -hostpci0 00:01.0,pcie=1`(按组传;若启动报隔离不满足, 用 `-hostpci0 0000:00:01.0;0000:01:00.0` 形式补传 root port)。 vBIOS ROM 先不挂,Code 43 在 R465+ 驱动已移除检测。 5. VM 内装驱动:Maxwell 已进 legacy 分支,装 **R580 系**驱动(提前下载好放 VM)。 6. 验证:VM 内 `nvidia-smi` 出卡 → 看板"VM 内实时数据"卡片自动出现利用率/显存/温度。 7. Sunshine 切 NVENC(配置 encoder=nvenc 或按其自动探测),1080p60 复测帧率。 ## GPU 数据看板(已上线) - 地址:`http://192.168.1.51:8090/`(自动刷新 4 秒) - 源码:`tools/gpu_dashboard.py`(宿主机 `/root/gpu_dashboard.py`, systemd 单元 `gpu-dashboard.service` 已设开机自启) - 直通前显示:型号/驱动/直通阶段/IOMMU 状态与组内设备/VM 配置; 直通后自动经 `qm guest exec 100` 采集 nvidia-smi:利用率、显存、温度、 驱动版本、功耗、NVENC 编码会话数。 - 手动重启:`systemctl restart gpu-dashboard`。 - 后续:接管理平台后,该数据源可换成平台 GPU 池接口(Web 控制台监控模块复用)。 --- # 2026-10-30 实施记录:直通落地成功,卡在 vBIOS,已回退保环境 ## 已完成并持久化 1. 宿主机:blacklist nouveau + vfio.conf(ids=10de:13d9,8086:0c01) + initramfs 更新 + 重启; 重启后 `01:00.0` 由 vfio-pci 接管,nouveau 0。 2. VM 100:hostpci0=0000:01:00.0,pcie=1 挂载成功;客户机出现 `3D Video Controller`。 3. 驱动:582.66 WHQL 经"PC 下载 → 宿主机 8091 HTTP → VM 内网拉取"进入 VM (VM 直连 NVIDIA CDN 被 403,需走内网中转);安装器兼容性检测拒绝(桌面包 INF 无移动 ID), 改用 `pnputil /add-driver Display.Driver/nvcvi.inf /install` 成功—— nvcvi.inf 含我们的精确 ID `PCI\VEN_10DE&DEV_13D9&SUBSYS_65571558`, 设备绑定成功、`C:\Windows\System32\nvidia-smi.exe` 出现。 4. 全部 VM 已设 onboot 自启;宿主机新增 systemd 服务:`gpu-dashboard`(8090)、`dl-http`(8091)。 ## 阻塞点:GM204M 缺少可用 vBIOS,驱动初始化失败(Code 43) - 宿主机 dmesg:`Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff` —— 该 Optimus 移动卡的 ROM BAR 读不出 vBIOS;sysfs 转储 0 字节。 - 已尝试无效:`cpu host,hidden=1`;`args -cpu host,-hypervisor,hv_vendor_id=...,kvm=off`; `rombar=0`(设备直接不枚举)。 - 供体 ROM 实验:TechPowerUp 上两个 "GTX 965M" 条目实为 GM206(1427) 改版(芯片不符); 同 GM204 的 Clevo GTX 970M(13D8) ROM 经 PCIR 补丁(vendor 10de + device 13d9 + 子系统 6557) 后 guest 仍不枚举设备。 - 结论:**需要这块卡(或同款 GM204M/13D9)的真 vBIOS 才能完成驱动初始化**。 ## 已回退(保客户演示环境) - VM 100 已摘除 hostpci 并重启,Sunshine 正常(x264 路线),47989 开放; 失败安装无残留(无 NVIDIA 目录)。 - 直通重新启用只需两条命令:`qm set 100 -hostpci0 0000:01:00.0,pcie=1[,romfile=...]` + 重启 VM。 ## 后续选项(按代价排序) 1. **宿主机整机冷断电 30 秒以上**(现场 1 分钟操作;Maxwell 多次热重启后设备状态可能损坏, 冷启动是社区最后一招)→ 开机后重挂 `romfile=gtx965m-fixed.rom`(已留存 `/usr/share/kvm/gtx965m-fixed.rom`,即 970M ROM 补丁版)再试。 2. **获取真 GM204M(13D9) vBIOS**:任何可进系统的 965M 机器用 GPU-Z 导出 (同事/二手渠道),或从 CLEVO BIOS 刷写包提取;放到 `/usr/share/kvm/` 后 romfile 挂载。 3. 业务备选:若 965M 直通确认不可行,NVENC 需换卡(桌面 GM204 及以上)或改用其他硬件方案。 ## GPU 数据看板 `http://192.168.1.51:8090/`(systemd `gpu-dashboard`,源码 `tools/gpu_dashboard.py`)。 驱动一旦可初始化,"VM 内实时数据"卡片自动显示利用率/显存/温度/NVENC 会话,无需改代码。