Why this builder exists

Preparing a small ARM board is more than copying files to an SD card. The root filesystem, board architecture, partition layout, boot files, and first-boot configuration all need to agree. A manual build can work once and still be difficult to reproduce later.

This tool keeps that process visible. Choose the output and board, inspect the service state, and keep the resulting artifacts attached to the build that produced them.

Build

Service status is loading.

service idle
current job No build has been started in this service process.

Artifacts

Rootfs archives and board images produced by the service.

  • Loading artifacts.

First boot handoff

Keep provisioning close to the board; do not depend on a network service just to deliver cloud-init data.

  1. 1 Render seed

    racket main.rkt seed render

  2. 2 Copy seed

    Use USB or local seed media.

  3. 3 Boot board

    Ethernet can wait for SSH and packages.

Build log

Open only when you need raw service output.

No build log yet.

Two outputs, two jobs

A rootfs archive is the reusable Linux userspace: packages, configuration, and the filesystem tree that can be unpacked into another image or deployment process. An SD-card image adds the board-facing disk layout so it can be written directly to media and booted.

The board selector makes the hardware assumption explicit. The same Alpine userspace can target several Rockchip generations, but the final bootable image still has to match the NanoPi board that will run it.

The public surface stays bounded

Status, artifacts, and logs make the process understandable, but starting a build remains restricted. Image creation consumes trusted infrastructure and should not become anonymous public compute.

First-boot seed handoff stays close to the board as well. Rendering and copying seed data locally means the new machine can establish its identity before it depends on network services, SSH, or package mirrors.