重构:完善串流就绪检测并补充 GPU 联调记录
变更详情:kiosk 会话就绪检测重构(Moonlight 输出解析器/事件化回调/单元测试);GPU 直通实操记录(vfio Subsystem 注入、sysfs vBIOS、7zr+pnputil 安装、566.36 驱动、Sunshine 配对断链修复)
This commit is contained in:
1 parent
b08486046b
commit
13f645a503
14 files changed
+743
-225
No files matched your search
@@ -253,6 +253,62 @@ Desktop Duplication 的脏帧节奏,叠加 QEMU 显示栈),不是编码器
|
||||
|
||||
---
|
||||
|
||||
# 2026-10-30 下午追加:GPU 直通实操 + 配对断链修复(大量新坑位)
|
||||
|
||||
## 直通实操结论(VM 100 / GTX 965M CLEVO 1558:6557)
|
||||
|
||||
1. **vfio reset 会把 GPU 的 Subsystem ID 清零**(Windows 里实例变成
|
||||
`SUBSYS_00000000`),而 NVIDIA 移动卡驱动全部按 SUBSYS 匹配
|
||||
(本卡在 `nvcvi.inf` 的 `SUBSYS_65571558`),不注入就永远"无法安装"。
|
||||
解法 = QEMU 设备参数 `x-pci-sub-vendor-id=0x1558,x-pci-sub-device-id=0x6557`。
|
||||
2. **移动卡 vBIOS 不在卡上**(ROM BAR 为空,宿主 dmesg 反复
|
||||
"No more images in PCI ROM")。宿主开机时系统 BIOS 已 shadow 过 vBIOS,
|
||||
可从 sysfs 抽取:停 VM → `echo 0000:01:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind`
|
||||
→ `echo 1 > rom; cat rom > gtx965m.rom`(108KB,55AA 开头有效)→ 重绑 vfio。
|
||||
3. **NVIDIA 安装器(-s/-x)在 qemu-ga SYSTEM 会话下静默挂起**(CPU 时间 ~0s,
|
||||
无解包无日志)。VM 内装驱动的可行路径:PC 端 7zr 解包 → 取 Display.Driver →
|
||||
zip 传入 VM → `pnputil /add-driver nvcvi.inf /install`。
|
||||
国内线路被 NVIDIA CDN 403,直链需 PC 中转(PC→scp 宿主机→宿主机 HTTP→VM 拉)。
|
||||
4. **582.78 绑定成功但 D3D 全灭**:PnP Status OK(需手动
|
||||
`pnputil /restart-device` 踢一次,开机自启是 Code 43),但 dxdiag 看不到适配器、
|
||||
NVML 初始化失败、所有硬编编码器 D3D11 建设备报 0x887A0004 (DEVICE_REMOVED)。
|
||||
已换 **566.36**(2024-12,Maxwell+VM 社区验证充分),包已装、设备已绑定;
|
||||
D3D 是否健康**尚未验证**(GPU 在替换期间被移出 VM,见下)。
|
||||
5. **可用挂载参数模板**(未来重启 VM 用):
|
||||
`-device vfio-pci,host=0000:01:00.0,bus=pcie.0,addr=0x10,x-pci-sub-vendor-id=0x1558,x-pci-sub-device-id=0x6557,romfile=gtx965m.rom`
|
||||
(rom 放 /usr/share/kvm/;另一会话在测 `hv_vendor_id=NVidiaFIX,kvm=off` 方案)。
|
||||
6. **local-lvm thin 池曾被驱动文件写满**(100% → error IO → VM 被 QEMU 暂停),
|
||||
已 `lvextend -L +13G pve/data`(49→62GB)。VM 内 C:\nvsetup 有 ~12GB 驱动
|
||||
中间产物可清理;池仍超配(160GB 卷/62GB 池),建议后续扩存储。
|
||||
|
||||
## 配对断链与修复(重要运维知识)
|
||||
|
||||
- `sunshine_state.json` 存服务器 uniqueid 与已配对客户端。**删它 = 所有客户端失配**。
|
||||
修复后的新流程(2026.914 的"Web UI 批准式"配对):
|
||||
1. 盒子:`moonlight-qt pair 192.168.1.70 --pin 4321`(**PIN 由客户端生成**,可 `--pin` 指定);
|
||||
2. 宿主/PC 侧调 Sunshine Web API 批准:
|
||||
`GET /api/csrf-token`(Basic Auth)→
|
||||
`POST /api/pin` body `{"pairing_id":"<GET /api/pin 里拿>","pin":"4321"}`,
|
||||
头带 `X-CSRF-Token` + Basic Auth(无 /api/login;POST 必须 CSRF 头)。
|
||||
- Web 凭据已重置为 `vdiadmin / VdiPass2026`(写在本页,勿提交正式环境)。
|
||||
- **旧版缓存 uniqueid 会让 pair 卡 "Found unexpected PC" 死循环**:
|
||||
盒子 `~/.config/Moonlight Game Streaming Project/` 整目录删除后重配即可。
|
||||
- Sunshine 重启不再换 uniqueid(持久化已恢复);**若再出现"每次重启换 uniqueid",
|
||||
先查 sunshine_state.json 是否能写**。
|
||||
- NVIDIA 设备半坏时 Sunshine 捕获初始化会崩循环(服务恢复 5-6 分钟拉起一次),
|
||||
表象是"每几分钟换一次 UUID + 配对全部失败"。根因仍是驱动 D3D 问题。
|
||||
|
||||
## 当前现场(2026-10-30 14:50)
|
||||
|
||||
- VM 100:**GPU 未挂载**(另一并行会话用 `hv_vendor_id=NVidiaFIX` 方案接手了配置,
|
||||
为避免两个会话互相覆盖,本会话已停止改 VM 配置);VM 内 566.36 驱动已装好待用。
|
||||
- 盒子:kiosk 单链已恢复、配对已修复、串流实测 ~23 FPS(软编基线)可正常进出。
|
||||
- 宿主机 /root 下留有 nv582.78.exe、DisplayDriver.zip、DD566.zip、gtx965m.rom;
|
||||
8018 端口有临时 HTTP 服务(http8018svc)供 VM 拉文件,用完可
|
||||
`systemctl stop http8018svc`。
|
||||
|
||||
---
|
||||
|
||||
# 2026-10-30 追加:开机直进桌面列表
|
||||
|
||||
按产品决定,盒子开机不再显示 kiosk 登录页,直接进入"选择云桌面"列表页:
|
||||
|
||||
Reference in new issue
Block a user