0008 Diskless netboot for rackpi5

accepted date 2026-07-07 (backfilled 2026-07-08) deciders jawn #adr
  • Context

    • SD cards are the least reliable component in the Pi fleet, and rackpi5 sits in the rack where card swaps are annoying. spore already serves NFS/PXE for the lab.

  • Decision

    • rackpi5 runs diskless. Its default boot is a stateless RAM image built from the flake (nix/images/pi5-ram.nix, the rackpi5-ram configuration) and served over HTTP from spore; the NFS-root rackpi5 configuration is the fallback tier.

  • Consequences

    • No local storage to fail; a reboot always boots a known-good image, and "deploying" means publishing a new image on spore.

    • spore becomes boot-critical infrastructure — its NFS/PXE stack is scraped and alerted on by the folly monitoring stack.

    • All rackpi5 state is ephemeral by design; anything worth keeping must live elsewhere.

    • Gotcha class to watch: DHCP/netboot identity mixups (a MAC swap between dns and rackpi5 has bitten before).

  • Links

Linked references 5

ADR

ADR/0008 Diskless netboot for rackpi5 — stateless RAM image served from spore

Hosts/spore

NFS/PXE boot server — boot-critical for Hosts/rackpi5 (ADR/0008 Diskless netboot for rackpi5); monitored by folly.

Hosts/rackpi5

Diskless: PXE-netboots the rackpi5-ram image from Hosts/spore and runs entirely from RAM (lsblk shows no disks; static hostname is rackpi5-ram). See ADR/0008 Diskless netboot for rackpi5.

Architecture/NixOS

Raspberry Pis: cloudpi4, homepi4, weatherpi4, dns, rackpi5 (diskless — see ADR/0008 Diskless netboot for rackpi5), spore (NFS/PXE server)

Fleet
HostPurposeHardwareNotes
Hosts/cloudpi4utility PiPi 4B 4 GBstill Ubuntu 22.04, not NixOS
Hosts/homepi4kioskPi 4B 8 GBRunbooks/Kiosk; use homepi4-wifi.lolwtf.ca
Hosts/weatherpi4kioskPi 4B 8 GBreach over Tailscale; Runbooks/Kiosk
Hosts/dnsDNSPi 5 8 GB
Hosts/rackpi5rack statusPi 5 8 GBdiskless — RAM image from spore (ADR/0008 Diskless netboot for rackpi5)
Hosts/sporeNFS/PXE boot serverPi 5 8 GB, NVMeboot-critical for rackpi5; monitored by folly
Hosts/radiopi0radioPi Zero Wunmanaged — Raspbian buster, Pirate Radio case + pHAT BEAT DAC