vdi-cloud/docs/linux-desktop-onboarding-20261104.md

95 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ubuntu / 麒麟云桌面接入记录(2026-11-04)
> 后续更新:麒麟已升级真实2560×1440/30FPS配置与30Mbps,动态短测约23FPS,见[麒麟2K调优记录](kylin-quality-20261104.md)。以下1080p参数属于初次接入记录。
两台 Linux 已接入现场盒子的正常桌面选择流程。实际验证了连接、画面、键盘、鼠标、退出和再次连接;最终回到桌面列表。Windows 也完成了原配置连接回归。
## 现场配置
| 桌面 | 地址 / 用户 | 系统与服务端 | 串流配置 |
| --- | --- | --- | --- |
| Ubuntu | 192.168.1.72 / test2 | Ubuntu 24.04.4;Sunshine 2026.914.233613 | Desktop,1920×1080,30 FPS,H.264 软件编码 |
| 麒麟 | 192.168.1.71 / test1 | 银河麒麟 V10 SP1;Sunshine v0.21.0 Ubuntu20.04 构建 | Desktop,1920×1080,30 FPS,H.264 软件编码 |
| Windows | 192.168.1.70 | 原 Sunshine 服务端 | 原 Desktop,2560×1440,45 FPS 配置 |
盒子为 `armbian@192.168.1.188`。原 Linux 桌面上的 Moonlight 是客户端,用于连接其他主机;本次补齐 Linux 的 Sunshine 服务端,让盒子 Moonlight 可以连接它们。未移除原 Moonlight。
盒子使用原 RKMPP 私有客户端与 EGL/GLES 呈现路径;本次没有修改产品源码,也没有把现场 IP 写入源码默认值。
## Linux 服务
两台均使用登录用户的 systemd 服务与 XDG 自启动:
- `~/.config/systemd/user/vdi-sunshine.service`:已 enabled,现场为 active。
- `~/.config/autostart/vdi-sunshine.desktop`:图形登录后导入 DISPLAY、XAUTHORITY 等会话环境并启动服务。
- `~/.config/sunshine/sunshine.conf`:X11 捕获、software 编码、ultrafast、zerolatency、禁用 UPnP、Web 管理来源限制为本机。
- `~/.config/sunshine/apps.json`:发布 `Desktop`。
- `~/.config/sunshine/vdi-admin.json`:随机生成的各自主机管理凭据,权限 600;未复制进仓库。
服务启动前把 `Virtual-1` 设置为 1920×1080,创建或复用 `vdi_audio` 虚拟音频 sink,并设为默认。Sunshine 配置使用 `audio_sink = vdi_audio`,采集端自动选中 `vdi_audio.monitor`。两台最后一轮串流均未出现采音初始化失败;Ubuntu 日志明确显示 Opus 初始化,盒子日志显示双声道音频流启动。实际扬声器听感尚未验收。
### Ubuntu 登录配置
用户明确授权 test2 自动登录并使用 Xorg,修改前已备份:
- `/etc/gdm3/custom.conf`:`WaylandEnable=false`、`AutomaticLoginEnable=true`、`AutomaticLogin=test2`、`DefaultSession=ubuntu-xorg.desktop`。
- `/var/lib/AccountsService/users/test2`:`Session` / `XSession` 为 `ubuntu-xorg`。
- 备份目录 `/var/backups/vdi-linux-20261104-100722/`,文件 `custom.conf`、`test2`。
重启 GDM 后已进入 test2 的 Xorg 桌面,`DISPLAY=:0`、`XAUTHORITY=/run/user/1000/gdm/Xauthority`。未重启虚拟机;整机重启后的自动恢复仍待验证。另补装 `pulseaudio-utils`,未执行系统整体升级。
### 麒麟兼容部署
现场 glibc 2.31,选择可兼容的官方 v0.21.0 Ubuntu20.04 构建。麒麟安全策略拒绝未签名 DEB 后,采用解包部署:
- root 拥有的 `/opt/vdi-sunshine-0.21.0/`。
- `/usr/share/sunshine` 指向其资源目录。
- 对具体 Sunshine 二进制及当次临时安装脚本做 `kysec_set -n exectl -v verified` 单文件认证;未全局关闭 KYSEC。
- `/etc/udev/rules.d/85-vdi-sunshine.rules` 配置 uinput,现场 ACL 已赋予 test1 读写权限。
麒麟沿用已有 test1 图形会话;当时锁屏已临时解锁,未关闭长期锁屏,也未配置新的自动登录。后续若回到登录界面或锁屏,需要按原策略登录或解锁。
## 盒子配置与配对
只更新 `~/.config/vdi-terminal/desktops.json` 中 Ubuntu / 麒麟对象,Windows 对象保留原值。原配置备份:
`/home/armbian/vdi-terminal/backups/linux-desktops-20261104-101507/desktops.json`
两台均完成盒子原 Moonlight 配对;Sunshine 服务重启后原配对仍有效。只在无串流时重启 kiosk 刷新列表。正常客户端路径:
`/home/armbian/vdi-build/rkmpp-experiment/build/moonlight/app/moonlight`
退出串流回列表使用 `Ctrl+Alt+Shift+Q`。
## 验证结果与证据
证据目录:[linux-desktops-20261104](evidence/linux-desktops-20261104/)。
| 项目 | 结果 | 证据 |
| --- | --- | --- |
| 三张卡可连接 | 通过 | [列表截图](evidence/linux-desktops-20261104/desktop-list.png) |
| Ubuntu 实际画面与输入 | F8(65477)及鼠标左键事件到达虚拟机临时 GTK 窗口 | [截图](evidence/linux-desktops-20261104/ubuntu-stream.png)、[事件](evidence/linux-desktops-20261104/ubuntu-input.jsonl) |
| 麒麟实际画面与输入 | F8(65477)及鼠标左键事件到达虚拟机临时 GTK 窗口 | [截图](evidence/linux-desktops-20261104/kylin-stream.png)、[事件](evidence/linux-desktops-20261104/kylin-input.jsonl) |
| 最后 Ubuntu / 麒麟 / Windows 依次连接再返回列表 | 三项均硬解就绪且保持运行,最后正常退出 | [结果 JSON](evidence/linux-desktops-20261104/final-stream-check.json) |
| Linux 实际视频尺寸与渲染路径 | h264_rkmpp、drm_prime、EGL/GLES、1920×1080 | [Ubuntu 日志](evidence/linux-desktops-20261104/ubuntu-client-final.log)、[麒麟日志](evidence/linux-desktops-20261104/kylin-client-final.log) |
| Windows 原配置回归 | 2560×1440 硬解就绪,正常退出 | [客户端日志](evidence/linux-desktops-20261104/windows-client-final.log) |
最后约十秒有效视频样本中 Ubuntu 渲染 29.59 FPS、麒麟 29.35 FPS,仅用于确认短时链路可运行,不代表长时间性能验收。Windows 这轮短测渲染 35.76 FPS,不据此重新定义原 45 FPS 配置的性能结论。
`*-sunshine.service`、`*-sunshine.conf` 是最终配置快照,`*-sunshine-final.log` 是最后串流服务端日志,`*-final-state.txt` 记录服务、音频和 uinput 状态,`ubuntu-login-config.txt` 记录登录配置。截图是盒子 2560×1440 输出,Linux 视频本身为 1920×1080。
Ubuntu 日志仍有 CAP_SYS_ADMIN 探测失败及显示信息回退提示,但实际选中了 X11 并成功捕获 1080p;本次没有为消除这些提示授予额外高权限。麒麟退出时有 GLib Source ID 警告,服务仍为 active 且可再次连接。
最初 Xvfb + 软件解码独立探测曾出现控制断开,同期原 Windows 会话也断开,原因未确定;后续以上正常硬解入口回归均通过。安装 Xvfb 时 apt 同时升级了盒子的 `libpciaccess0`、`xserver-common`、`xserver-xorg-core`;未重启 Xorg。临时 Xvfb 与输入测试服务已停止。
当前验收覆盖基础画面与输入及短时重连;Linux 2K、GPU 编码、长期稳定性、重启恢复、锁屏策略、音质与生产多用户隔离尚未验收。
## 回退与后续维护
1. 盒子恢复上述备份的 `desktops.json`,在无活动会话时刷新 kiosk,可撤回本轮卡片配置。
2. 在对应 Linux 图形用户下执行 `systemctl --user disable --now vdi-sunshine.service`,将 `~/.config/autostart/vdi-sunshine.desktop` 移出自启动目录,可停止本次 Sunshine 自动启动。保留 `~/.config/sunshine/` 可保留配对与配置。
3. Ubuntu 如需恢复原登录方式,以 sudo 将备份 `custom.conf` 放回 `/etc/gdm3/custom.conf`,备份 `test2` 放回 `/var/lib/AccountsService/users/test2`,保留原属主和权限;在维护窗口重启 GDM(会终止图形会话)。
4. 麒麟如需彻底卸载,先停服务,再核对 `/usr/share/sunshine` 链接目标和 uinput 规则是否仍被其他应用使用,最后移除本次 `/opt/vdi-sunshine-0.21.0` 部署;不要直接覆盖发行版同名文件或全局修改 KYSEC。
排查服务可先运行 `systemctl --user status vdi-sunshine.service` 和 `journalctl --user -u vdi-sunshine.service`。麒麟版本较旧是当前兼容方案,后续升级需要重新评估系统库兼容性与安全维护。