Show HN: 每块板的串口访问、烧录和启动辅助程序
Provisioner 是一个用于 SBC 板级配置的工具,每个板对应一个实例。它提供串口控制台访问、SSH 多路复用、镜像启动及文件传输功能,适用于网络不稳定且 UART 为可靠通信方式的场景,支持脚本化操作和多种传输协议。
1 分•作者: acarminati•大约 2 小时前
你好 HN,
我正在构建一个名为 Provisioner 的小型基础设施工具:一个用于 SBC 上电和实验室自动化的板级配置 sidecar。
https://github.com/alessandrocarminati/provisioner
其模型很简单:每个板一个实例。它紧邻硬件,拥有串口控制台,通过 SSH 提供访问,并通过 TFTP/HTTP 提供启动镜像(内核、initramfs、rootfs)。它专为网络不稳定、存储只部分烧录、而 UART 仍是唯一可靠通信方式的阶段设计。
它能做什么:
- 串口控制台所有权 + SSH 多路复用
- 监控 shell + 串口隧道
- 可脚本化的启动交互
- 镜像配置(TFTP + HTTP)
- 通过串口进行带内文件传输
- gzip/base64 技巧 + XMODEM
- 源于我之前开发的 send_console-ng 工具 https://github.com/alessandrocarminat...
查看原文
Hi HN,<p>I’ve been building a small infrastructure tool called Provisioner: a per-board provisioning sidecar for SBC bring-up and lab automation.
<a href="https://github.com/alessandrocarminati/provisioner" rel="nofollow">https://github.com/alessandrocarminati/provisioner</a><p>The model is simple: one instance per board. It sits next to the hardware, owns the serial console, exposes access over SSH, and serves boot artifacts (kernel, initramfs, rootfs) via TFTP/HTTP. It’s designed for the phase where networking is unreliable, storage is half-flashed, and UART is the only thing still telling the truth.<p>What it does<p>- Serial console ownership + SSH multiplexing
- Monitor shell + serial tunnels
- Scriptable boot interaction
- Artifact provisioning (TFTP + HTTP)
- In-band file transfer over serial
- gzip/base64 hacks + XMODEM
- Derived from my earlier send_console-ng utility <a href="https://github.com/alessandrocarminati/send_file-ng" rel="nofollow">https://github.com/alessandrocarminati/send_file-ng</a>
- Pluggable power control
- SNMP PDUs, among others cheap ESP8266/Tasmota devices
- Serial logging
- Lightweight access control<p>Provisioner also embeds a minimal init runtime (goinit) inside the kernel initramfs, acting as its on-board provisioning agent, handling flashing, artifact retrieval, and reporting management state back over serial.<p>Routing & stream handling<p>Internally, Provisioner routes serial traffic through a pluggable router:<p>- Producers/consumers attach as components
- Human vs machine clients handled differently
- Unicast control sessions
- Broadcast multiplexing to multiple observers<p>This allows several users or services to watch the same console without interfering.<p>Filters<p>A filter subsystem can intercept and modify serial streams on the fly.<p>Originally added to mitigate ANSI Device Status Reports (e.g. Cursor Position Report issues) when tunneling serial consoles, but it doubles as a general stream rewriting mechanism for automation and normalization.<p>Positioning<p>Not trying to replace large systems like LAVA.<p>This is aimed at:<p>- Homelabs
- Bring-up benches
- Kernel/BSP work
- Small shared labs<p>Think lab automation you can deploy in an afternoon, not fleet orchestration.<p>Project is still evolving but already in daily use. Feedback and abuse welcome.