2026-09-27-路线A-Netdata大屏落地记录-kiosk与核显.md

路线 A 落地记录:Netdata 大屏(核显 kiosk)


一、显示拓扑(改造后)

card1 = NVIDIA(四口全 disconnected,纯计算卡)
card2 = Intel 核显(HDMI-A-2 connected → 就是那块 2K 屏)
fb0   = i915drmfb          ← 控制台/图形全走核显,独显 16GB 不再被显示栈占用

二、Netdata(采集与网页)

三、Kiosk 图形栈(Wayland)

组件作用说明
cage 0.1.5Wayland kiosk 合成器cage -s -d -- <app>;-s 允许切 VT,-d 不画客户端装饰
qutebrowser 2.5.4浏览器(QtWebEngine = Chromium 内核)用专用 --basedir 配置目录,tabs.show/statusbar.show = never → 纯页面全屏
grim 1.4.0kiosk 内截图验证渲染用(--shot 模式)
Netdata 落地页显示内容见第六节

关键脚本:/usr/local/bin/netdata-kiosk.sh、/usr/local/bin/display-mode、~/.config/qutebrowser-kiosk/{config/config.py,kiosk.css}

四、模式切换(一行命令)

display-mode kiosk qutebrowser   # 图形大屏(cage + 浏览器 + Netdata)
display-mode console             # 回文本控制台面板(btop + 状态栏)
display-mode status              # 看当前模式与运行状态

原理:~/.display-mode 里写 kiosk [浏览器];tty1 登录时 ~/.bash_profile → sysmon.sh 读它 → exec netdata-kiosk.sh;否则走原控制台面板。

五、这一路线踩过的 8 个坑(都实测过)

  1. 从 SSH 起 Wayland 合成器必失败:libseat: Could not open target tty: Permission denied → cage 必须在 tty1 的登录会话里启动(display-mode 正是这么做的)。
  2. epiphany -a/--application-mode 不吃 URL:它要的是 .desktop 文件(报 Invalid desktop file passed to --application-mode)→ 弃用 epiphany 的 app 模式。
  3. qutebrowser 缺 Qt Wayland 插件会回退 X11 → 在 cage 下把合成器一起拖死(Wayland events: Connection reset by peer)→ 装 qtwayland5 并 QT_QPA_PLATFORM=wayland。
  4. qutebrowser 配置里写错一个不存在的设置项会直接崩(我们写 c.messages.mouse → KeyError: 'command-history')。只写确定存在的项。
  5. Netdata v2 的登录浮层:社区答案是 URL 加 /v3,但 v2.11 上 /v3 会 ChunkLoadError(chunk 路径不匹配);/old/ 经典仪表盘也因 base-path 全部报 Unexpected token < in JSON。最终解法:仍用根路径,用 qutebrowser 用户样式表把浮层容器 #splashMessageContainer.splash-message 永久隐藏(仪表盘就在它后面,已渲染)。
  6. pkill -f <模式串> 会自杀:命令串里含 cage -s 时,pkill -9 -f "cage -s" 把执行命令的 SSH shell 一起杀了(整条命令静默不执行)→ 一律用 pkill -x <进程名>。
  7. Wayland 下 dd if=/dev/fb0 抓不到内容(KMS 客户端接管后 fbdev 被 detach)→ kiosk 内截图必须用 grim(本脚本的 --shot 模式)。
  8. ~/.display-mode 分支没装上时 tty1 仍会起老面板——排查时先用 grep -n display-mode /usr/local/bin/sysmon.sh 确认脚本真的更新了。

六、当前未完成的部分

Kiosk 现在显示的是 Netdata 的欢迎/统计落地页(指标总数 5,132、分层存储表、底部 Database/System/Modules/Directories 标签),图表在底部标签里。可选下一步:

七、资源占用与安全

八、复现清单(本目录 scripts/)

脚本作用
install-netdata.sh官方 kickstart 安装 Netdata
netdata-nvidia_smi.conf / netdata-portcheck.conf两个采集器配置
netdata-collectors.sh安装采集器配置并自检(注意其中的写法已修正 stdin 坑)
install-kiosk.sh装 cage / epiphany / grim
netdata-kiosk.shkiosk 启动器(含 --shot 截图验证模式)
qutebrowser-kiosk-config.py + kiosk.css浏览器 kiosk 配置与浮层隐藏样式
display-mode.sh一键切换 kiosk / console
igpu-check.sh核显启用状态检测

九、截图

下载此文件