Skip to content

Barn 0.8.0: clearer recovery and refreshed images

Recover host preparation, isolate failed nodes, preserve VM identities, and start the September Debian and Ubuntu images.
Note

Historical release record (0.8.0). Old release downloads are retired; use the installation guide for the current release.

Barn 0.8.0 cuts down on manual cleanup after interrupted host setup or partial VM starts, and refreshes the Debian and Ubuntu images while preserving previous catalog artifacts and existing VM identities.

What changed

  • Host preparation follows the command. Interactive start, restart, and reload can install missing host tools and bring an inactive Barn network back online. On macOS, first-time network installation locates or installs Homebrew (or downloads and verifies the pinned archive) before prompting for administrator credentials, preventing Homebrew from invalidating an earlier sudo token.
  • Failed nodes do not block independent peers. During up or start, a missing host share fails only the affected node while healthy stopped peers continue to start. Errors report both the missing host source path and guest mount point without creating empty placeholder directories, and restart, reload, and recreate verify share paths before stopping running VMs.
  • Recovery preserves identity. If a deployment public key is missing, Barn derives it from the existing private key; if the private key is lost, Barn prints backup recovery steps rather than generating a replacement keypair that existing guests would reject. macOS socket_vmnet log-directory recovery preserves network ownership markers to avoid false subnet-conflict errors.
  • Failures keep their context. Scoped retry hints preserve custom -f inventory paths, --repo overrides, and command names (a failed start suggests start). Initial setup and its retry share a single operation ID, bounded event logs can be written and read before deployment state exists, and inspecting uncached image metadata no longer requires qemu-img.
  • Accurate cleanup summaries. Deleting persistent disks or running purge reports the final deleted state without listing the same disks as both retained and removed. Orphaned disks from previously removed nodes no longer block destroy of the remaining lab.

September images

Embedded catalog 2026092001 contains 37 artifacts across 9 families, retaining all 27 previous artifacts and adding new amd64 and arm64 stable builds:

Family System version Image catalog version
d12 Debian 12.15 20260909.2596.1
d13 Debian 13.7 20260914.2601.1
u22 Ubuntu 22.04.5 20260913.0.0
u24 Ubuntu 24.04.5 20260911.0.0
u26 Ubuntu 26.04.1 20260918.0.0

Debian images include offline XFS tools and a pre-generated en_US.UTF-8 locale (C.UTF-8 remains default). Ubuntu images preserve Canonical’s upstream bytes and configure accounts and networking via cloud-init. Existing VMs and pinned image versions keep their current base images; see the image reference for catalog update details.

Install or upgrade

curl -fLO https://github.com/pgsty/barn/releases/download/v0.8.0/install.sh
chmod +x install.sh
BARN_VERSION=0.8.0 ./install.sh
export PATH="$HOME/.local/bin:$PATH"
barn version

For an existing lab, inspect barn plan and run barn up. start powers on existing nodes as-is, while up applies inventory changes and retries unfinished guest bootstrap. See the storage guide for how up handles damaged test data disks during recovery.

Validation and limits

Four hosts—two macOS arm64/HVF machines (m1, m5) and two Linux amd64/KVM machines (m0, m3)—completed the 7-distro pro acceptance pass covering Rocky Linux 9.8/10.2, Debian 12.15/13.7, and Ubuntu 22.04.5/24.04.5/26.04.1. Candidate 6d7870e performed a clean initialization from the LAN repository, and runtime candidate 1c054a0 upgraded in place and passed repeated healthy up, stop/start, two rounds of guest SSH, data-disk checks, Ansible configuration reads, and control-node lateral SSH (plus 7-node Ansible ping on both Macs) while preserving VM UUIDs, image identities, and disk inodes.

Single-run timings from the acceptance pass (the first up includes image download):

Host Platform Clean first up (6d7870e) Healthy up (1c054a0) Existing-disk start (1c054a0)
m0 Linux amd64 / KVM 117.915 s 3.924 s 36.944 s
m1 macOS arm64 / HVF 86.309 s 1.745 s 39.639 s
m3 Linux amd64 / KVM 98.443 s 2.169 s 44.068 s
m5 macOS arm64 / HVF 87.946 s 1.467 s 38.162 s

Release tag v0.8.0 (320a32afa8f6fca02592215aa0d5607ca4e852b2) updates only documentation relative to the tested runtime and passed local make check, source CI, the packaging snapshot, and the tag workflow. All 20 release assets (19 payloads plus checksums.txt) were verified against the public pre-release. Earlier regression and image-boot records are archived in the UX audit and image refresh record.

Isolated barn update runs against both official repositories verified signatures and activated catalog 2026092001, with all ten new image objects returning HTTP 200 and matching content lengths. Isolated installer runs on macOS arm64 and Linux amd64 verified 0.8.0 (320a32a) binary delivery, and the Homebrew tap update passed local audits and Homebrew CI.

Known limitations in 0.8.0:

  • macOS host directory sharing for Linux guests remains blocked by upstream QEMU virtfs directory-descriptor behavior on Darwin; preflight now diagnoses this earlier.
  • A missing control-node guest private key is now detected even when an older ready marker exists, though restoring peer SSH still requires recreating the control node. See the validation history for the full dated test matrix.

Table reader