跳转到主要内容

1 - Barn 1.2.0:资源规格、根盘扩容与宿主域名

资源覆盖、可恢复的根盘扩容、可配置并发、清单 hosts 发布与 Go 1.27.4。

Barn 1.2.0 于 2026-11-12 发布,对应提交 90f6158。本版本新增资源覆盖、可恢复的根盘扩容、可配置生命周期并发和清单 hosts 发布。双语命令参考覆盖全部 57 个操作命令及其选项。

从 1.1.0 升级

Linux 清单未指定 CPU/内存时,默认值由 2 vCPU / 4 GiB 改为 1 vCPU / 2 GiB,已有清单也受此影响。如需保留旧默认值,请在 all.vars 中显式设置 vm_cpu: 2、vm_mem: 4GiB,保留各节点覆盖值,并在应用变更前检查 barn plan。已应用 VM 的资源会保留到显式执行资源变更操作为止。根盘与数据盘默认值仍为 64 GiB 和 128 GiB。

VM 资源规格

可使用 --cpu/-C、--mem/-M、--scale/-S、--disk/-D,并结合镜像与架构选择。对应的 BARN_* 环境变量提供默认覆盖值,命令行优先。生成清单时保存基础规格;计划、校验、状态和生命周期输出使用 1c2g 等 SPEC 标签展示有效资源,JSON 保留数值、基数、倍数与输入来源。

resize --disk/-D 可原地扩大根盘。Barn 先停止 QEMU,再扩大磁盘,进入客机核验末尾的普通 ext4/XFS 分区,并记录恢复阶段,使中断操作可以续跑。扩容保留 VM 身份、密钥和数据,并恢复操作前的运行或停止状态;缩容与不支持的布局会被拒绝。详见根盘扩容与恢复。

生命周期并发

up、start、stop、restart、reload、recreate、destroy、purge 可通过 --parallel/-p 指定节点并发。默认值为逻辑 CPU 数减二,最小为一;零表示全部所选节点并行,正数指定上限。重试建议会保留显式覆盖值。

清单宿主名称

在 all.vars.vm_hosts 中声明服务名,使用 barn hosts install -f pigsty.yml --json 预览,再用 barn hosts install -f pigsty.yml --yes 应用。清单模式无需先创建 VM;省略 -f 时继续使用已应用节点名称。相同映射按大小写不敏感规则合并,地址冲突会报错;宿主侧映射不改变 VM 身份或客机配置。详见额外 hosts 映射。

依赖与打包

源码、CI 与发行包使用 Go 1.27.4。本轮将 golang.org/x/sys 更新至 0.50.0、golang.org/x/term 更新至 0.48.0、golang.org/x/text 更新至 0.44.0、github.com/klauspost/compress 更新至 1.20.4。打包使用 GoReleaser 2.20.1、内置 nFPM 2.48.0 与 Syft 1.57.1;RPM 内容校验改为要求 SOURCE_DATE_EPOCH 时间戳。版本锁定与许可证清单保存在发行源码中。

govulncheck 未发现导入包或可达符号中的漏洞;模块级报告列出的 GO-2026-5932 位于 Barn 未导入的 golang.org/x/crypto/openpgp。

镜像目录

内置签名目录保持 revision 2026110502,包含 9 个发行版系列、17 个架构制品的 stable 版本。两个官方源均通过签名验证、全新数据根激活、内置字节比对和制品大小/可达性检查。默认镜像仍为原生架构的 Ubuntu 24.04。

发布验收

全部 20 个公开发行附件均已回下载并核对摘要,Linux/KVM 的 18 项操作、原生 Mac 的 15 个生命周期阶段以及桌面、双向剪贴板和关闭窗口检查通过。公开安装器、Homebrew 升级与 Formula 测试通过,Homebrew 三平台 CI 也已完成。签名、公证、升级与恢复测试的完整证据见发布验收记录。

安装或构建

替换 Barn.app 前先停止运行中的 Mac VM,再通过 Homebrew 升级:

brew update
brew upgrade pgsty/infra/barn

也可安装指定版本:

curl -fLO https://github.com/pgsty/barn/releases/download/v1.2.0/install.sh
BARN_VERSION=1.2.0 bash install.sh
export PATH="$HOME/.local/bin:$PATH"
barn version

安装器核验归档 SHA-256。Darwin arm64 归档包含签名、公证后的 CLI、helper 与 Barn.app;其他归档及 Linux DEB/RPM 包包含 CLI 与配套 helper。全部平台文件见下载列表,安装步骤与构建方法见安装指南和源码构建。

2 - Barn 1.1.0:镜像选择与实时进度

从命令行选择 Linux 镜像与客机架构,查看实时进度,并恢复中断的资源调整。

发布于 2026-11-09。 Barn 1.1.0 新增镜像与客机架构覆盖参数,统一实时进度表,并改进 CPU 与内存调整的恢复能力。内置签名镜像目录仍为 2026110502,涵盖 9 个发行版系列、17 个架构制品;默认镜像仍是宿主原生架构的 Ubuntu 24.04。

镜像与架构选择

plan、up、reload、recreate 和 resize 支持 --image/-I 与 --arch/-A,只覆盖本次命令的期望配置。镜像覆盖只作用于选中的节点,后续命令提示会保留节点选择、覆盖参数与镜像仓库。已有虚拟机仍需通过 recreate 更换镜像或架构。

barn plan -I u24 -A amd64
barn up -I u24 -A amd64

init 和生成模板的 setup 会将这两项选择写入新清单;validate 接受相同参数,校验时不修改文件。镜像查询、拉取与命名导入也支持 -A。架构可写为 amd64(别名 x86_64、x64)、arm64(别名 aarch64、a64)或 native;image info 与 image pull 保留原来的 -a 简写。

同架构客机使用 HVF 或 KVM,跨架构客机通过 QEMU TCG 进行兼容性测试。ARM TCG 使用固定 CPU 模型,保证 UEFI 启动时的虚拟 CPU 特性一致。Linux 宿主需要另行安装目标架构的 QEMU 系统模拟器和匹配的固件;barn setup 安装宿主原生架构依赖。同一部署中的所有节点使用相同客机架构。

进度与结果

Linux 与 macOS 生命周期命令、宿主准备、网络操作、镜像传输与仓库维护现在使用统一的实时进度表和完成摘要。交互提示或错误出现前会停止原地刷新,重定向输出使用普通文本行。配置校验列出实际执行的检查,状态表与标签使用纯 ASCII,包括 [DONE]、[FAILED] 和 [CANCELLED],同时 barn purge 默认直接删除部署并提供 --ask 确认提示。脚本可通过 --json 或 --yaml 获取结构化结果。

恢复修复

  • 离线 resize 在检查状态、停止虚拟机和提交配置期间持续持有部署锁,避免并发启动破坏记录的 QEMU 进程身份。
  • 在线 resize 在热插拔前写入恢复标记。操作中断后,status 会提示实际 CPU 或内存可能与已应用配置不一致(stage: "resize"、reason: "resize_incomplete");重试 resize 或执行 up / start 即可恢复。
  • 涉及整个部署的配置变化会将新节点纳入重建范围,并避免在重建完成前提示执行 up。
  • 生命周期重试命令会保留显式指定的官方 --repo,即使 BARN_REPO 指向其他来源。缺少原生 QEMU 时会进入宿主准备流程,缺少跨架构 Linux 模拟器时则会列出需要安装的依赖。

YAML 解析升级至 go.yaml.in/yaml/v4 4.0.0,参数解析升级至 pflag 1.1.0。YAML 输入与输出设置保持原有行为,未完成的 YAML 文档会在语法错误中报告解析器的 EOF 行号。发行包中的许可证与 SPDX 物料清单同步覆盖新版依赖。

升级与下载

替换 Barn.app 前先停止正在运行的 macOS 客机,再执行升级:

brew update
brew upgrade pgsty/infra/barn

也可以下载并运行本版本的安装脚本:

curl -fLO https://github.com/pgsty/barn/releases/download/v1.1.0/install.sh
BARN_VERSION=1.1.0 bash install.sh
barn version

安装脚本依据 checksums.txt 验证归档。Darwin arm64 归档包含经过签名和公证的 CLI、hosts helper 与 Barn.app;其他平台归档以及 Linux DEB/RPM 软件包提供 CLI 和匹配的 helper。虚拟机磁盘、密钥和状态保留在 BARN_HOME 下。

参阅使用文档、完整变更日志与相对 1.0.0 的代码变化。

3 - Barn 1.0.0:首个稳定版

Barn 首个稳定版加固破坏性操作、数据盘恢复、目录完整性与取消流程,并更新镜像目录至 revision 2026110502。

发布日期:2026-11-05。 Barn 1.0.0 是首个稳定版。最新稳定版请参见 Barn 1.1.0。

Barn 1.0.0 完成了发布前对破坏性操作、数据盘恢复、目录完整性与进程取消的审计。本版内置签名镜像目录 revision 2026110502,其中 Debian 13 的 amd64 与 arm64 镜像均更新为 20261103.2651.1。

安装 Barn · GitHub 发布页与下载 · 变更日志

变更

  • 整套部署重建会保留清单中缺少的节点。 不带节点参数的 barn recreate 遇到清单缺少已有节点时,会在停止任何虚拟机前拒绝执行(conflict,reason nodes_removed,退出码 4)。此前版本会删除被省略的节点却不重建。需要删除时请执行 barn destroy NODE,否则把节点加回清单。确认提示会列出将被替换的每个节点;销毁锁内会再次核对范围,预检期间已应用状态发生变化时返回 deployment_changed。
  • 删除控制节点后环境仍可用。 剩余的第一个节点接任控制节点,ssh-config、hosts、exec 与 provision 可继续使用。请在清单中更新控制角色,再执行 barn up 安装其控制 SSH 访问。如果接任节点留有无法完成的准备记录,Barn 会在删除任何内容之前拒绝销毁控制节点,并在错误中给出接任节点名称。
  • 只在识别出损坏时重置数据盘。 空白磁盘会被初始化。ext4 或 XFS 只有在检查工具报告可识别的损坏时才会重置,持久数据盘也一样。带分区表、签名缺少 UUID、使用不支持的文件系统特性或检查工具未知失败的磁盘会保留数据并给出警告。已有客机会在下一次 barn up 时获得更新后的脚本。
  • 修改宿主前确认一次。 在终端中,up、start、restart 与 reload 安装软件包或 Barn 网络前,会展示宿主准备计划并询问一次。没有终端时只报告缺少的条件;无人值守准备请执行 barn setup --yes。
  • 销毁命令接受 --yes。 destroy、recreate、mac destroy 与 mac recreate 接受 --yes。--force 继续有效,mac stop --force 仍表示强制断电。
  • 目录校验失败退出 7。 目录签名或签名 revision 校验失败时退出 7(integrity,reason 为 catalog_signature 或 catalog_equivocation)。缓存签名的权限或 I/O 错误仍属于运行时错误(退出 1)。两个官方仓库共享内置升级基线,对相同目录字节的新可信签名会被接受。
  • 取消操作可以传递给 sudo。 被取消的命令会收到 SIGTERM,sudo 会将其转发;Barn 最多等待 10 秒让进程及其继承的管道结束。
  • 宿主网络与 Mac 镜像。 存在其他宿主网络接口时,barn network uninstall 会保留全局 networkd 单元状态(preserve_networkd、checks.networkd)。Mac 镜像清理会保留中断的重建仍引用的 base。
  • 命令行。 不带命令运行 barn 会输出完整帮助;--json 与 --yaml 仍返回 actions[] 文档。显式的 --json、--yaml 与 --verbose 优先于 BARN_OUTPUT 和 BARN_VERBOSE,这些变量取值无效时仍可查看帮助。
  • 依赖。 Go 1.27.3、golang.org/x/net 0.62.0 与 go.yaml.in/yaml/v3 3.0.6。

升级

请沿用安装时的渠道升级。安装脚本默认选择最新稳定版(1.1.0),用发布附带的 checksums.txt 校验归档,并在无需 sudo 的情况下安装到 ~/.local/bin;需要固定 1.0.0 时设置 BARN_VERSION=1.0.0。DEB 与 RPM 软件包附在 GitHub 发布页中。

Homebrew
brew update
brew upgrade pgsty/infra/barn
barn version
Linux 安装脚本
curl -fLO https://github.com/pgsty/barn/releases/download/v1.0.0/install.sh
BARN_VERSION=1.0.0 bash install.sh
barn version

从 0.9.3 升级会保留 ~/.barn 下的虚拟机磁盘、SSH 密钥、状态与配置,无需重建。替换原生组件前请先停止 macOS 虚拟机。Apple Silicon 归档与 Homebrew 安装包含已签名公证的 Barn.app、CLI 与宿主辅助程序;Intel macOS 与 Linux amd64/arm64 归档提供 CLI 与宿主辅助程序。

请检查脚本是否受三项变化影响:目录签名校验失败的退出码由 1 变为 7;清单缺少已有节点时,整套部署 recreate 退出 4;交互式 up 准备宿主前会询问。

已知限制

  • Mac 恢复日志格式损坏时,barn mac image ls、barn mac doctor 中的空间估算与镜像清理都会停止,直到日志修复。
  • 某一台 Mac 机器的状态无法读取时,barn mac ls 会停止,其他机器仍可按名称使用。
  • macOS 宿主上的 Linux 客机共享目录需要客机内核支持 9p。

安全修复发布在最新的 1.x 补丁版本中,0.x 版本不再提供修复。详见 Linux 快速上手与 Mac 指南。

4 - Barn 0.9.3:安全扩容、按节点应用与中断恢复

新增只调整资源的虚拟机扩容、独立节点选择、灵活路径与共享目录、中断生命周期恢复,以及镜像目录 revision 2026102802。

发布日期:2026-10-31。 Barn 0.x 版本继续使用 GitHub 预发布频道。最新版本请参见 Barn 1.1.0。

Barn 0.9.3 聚焦于更安全的本地实验环境变更:新增只调整资源的虚拟机扩容,支持按节点独立收敛,接受清单与共享目录的普通用户路径形式,并让中断的生命周期操作可以安全恢复。

安装 Barn · 下载 0.9.3 · 源码发布说明

变更

  • 修改 vm_cpu 或 vm_mem 后执行 barn resize [node...]。QEMU 预留容量且后端支持时会热插拔增加的资源;减少资源或不支持热插拔时会自动停机再启动,同时保留虚拟机身份、磁盘和 SSH 密钥。镜像、磁盘、网络或共享目录变更请使用 barn recreate。
  • 使用选择器运行 plan、up、reload、recreate 或 resize 时,未选择节点会保留已应用定义。地址、别名、控制节点和部署级设置的冲突会在节点停机或删除前检查。
  • barn init [模板] --image 与 barn setup [模板] --image 可以在生成模板中选择镜像别名、频道或版本,不会下载镜像,也不会改写已有清单。
  • 在适用场景下,BARN_HOME、本地仓库、目录导出、清单、导入镜像与共享源支持相对路径、~/ 和目录符号链接。相对清单的共享源以清单真实文件目录为基准,并支持空格、Unicode、重叠目录及调用者可读但不归其所有的目录。
  • --parallel 与 --timeout 接受任意正值。声明了大小的本地镜像和目录产物可以超过 8 GiB;按摘要索引的导入、边界读取、注册表大小检查和缓存校验共同保护镜像存储。barn mac logs --lines 接受任意正行数。
  • 内置签名目录 revision 为 2026102802,包含 9 个发行版系列、17 个架构产物;默认仍是宿主架构的 u24:stable。
  • Linux 与 macOS 的生命周期、持久盘和替换操作中断后会留下日志状态供安全恢复;信号终止会产生结构化的 cancelled 结果。barn mac up --no-wait 在虚拟机进程启动后返回;若首次启动仍在初始化,请再次执行 barn mac up NAME 后再使用 SSH 或 exec。

升级

下载安装器时请显式选择 0.9.3,或升级 Homebrew 配方 / Linux 软件包。已有虚拟机磁盘和配置仍保存在 ~/.barn,升级无需重建虚拟机。

curl -fLO https://github.com/pgsty/barn/releases/download/v0.9.3/install.sh
BARN_VERSION=0.9.3 bash install.sh

需要从仓库激活当前签名目录时执行 barn update;流水线需要跨目录更新保持镜像不变时,请使用 vm_image: family@version 固定版本。替换原生组件前请先停止 macOS 虚拟机。详见 Linux 快速上手与 Mac 指南。

5 - Barn 0.9.2:签名公证的 Barn.app 与 SSH/exec 参数规范

Apple Silicon 发行包与 Homebrew 安装包含签名公证的 Barn.app,并明确 SSH/exec 参数规范。

发布日期:2026-10-30。 Barn 0.x 版本通过 GitHub 预发布渠道分发。

Barn 0.9.2 将完整的 macOS 原生客机组件纳入 Apple Silicon 下载包与 Homebrew 安装。安装一个软件包即可创建 Linux 和 macOS 虚拟机,无需安装 Go 或 Xcode。

安装 Barn · 下载 0.9.2 · 源码发布说明

变更

  • Darwin arm64 归档包含同一源码提交构建的 barn、barn-hosts-helper 与原生应用包 Barn.app。三个可执行文件均使用 Developer ID 签名并共同提交 Apple 公证;App 已装订公证票据并通过 Gatekeeper 检查。
  • brew install pgsty/infra/barn 一次安装 CLI、QEMU、helper 与原生 App,CLI 自动发现 Homebrew libexec 下的 App。macOS 客机要求 Apple Silicon、macOS 27+ 及已登录的图形桌面会话。
  • helper 先签名,再将最终 SHA-256 嵌入 CLI;发行归档装配原生组件后,打包流程再次验证配对关系。
  • ssh、exec、mac ssh 与 mac exec 执行远端命令时必须使用 --。SSH 将命令行交给客机 Shell,exec 保留独立参数;exec 中需要管道或重定向时,请显式使用 sh -c。
  • Linux arm64/amd64 与 Intel macOS 继续提供 CLI 和 helper,通过 QEMU 运行 Linux 客机。

安装与使用

brew install pgsty/infra/barn
barn version

# Linux 客机
barn up
barn ssh
barn exec meta -- uname -a

# Apple Silicon / macOS 27+ 上的 macOS 客机
barn mac doctor
barn mac up mac1
barn mac open mac1
barn mac ssh mac1

首次创建 macOS 虚拟机需要下载 Apple 恢复镜像并准备可复用的基础系统,也可通过 barn mac setup --ipsw PATH 使用已有的兼容 IPSW。

升级

替换 App 前先停止运行中的 Mac 虚拟机,再执行 brew update 与 brew upgrade pgsty/infra/barn。磁盘与配置保留在 ~/.barn,无需重建虚拟机。旧版 SSH/exec 脚本请补上 --,并将 exec 的程序名与参数分开传递。

下载安装器需显式指定 BARN_VERSION=0.9.2,因为 GitHub 的 releases/latest 不会选择预发布版。本次发布包含四平台归档、Linux DEB/RPM 软件包、SPDX 物料清单、校验和、安装器及生成的 Homebrew 配方;release.json 记录精确源码提交与锁定的构建工具版本。

随后在 Barn 0.9.3 中实现的路径、共享、节点选择与上限调整见 Barn 0.9.3 变更。

6 - Barn 0.9.1:Go 1.27.3 工具链与 Barn.app 命名统一

Go 1.27.3、依赖更新与 Barn.app 命名和签名改进,升级说明。

发布日期:2026-10-22。 Barn 0.x 版本通过 GitHub 预发布渠道分发。若需直接通过 Apple Silicon 发行包或 Homebrew 安装已签名公证的 Barn.app,请升级至最新的 Barn 1.1.0。

Barn 0.9.1 升级了 Go 工具链与依赖模块,并将 Mac 原生组件统一命名为 Barn.app。CLI 命令、清单格式、镜像目录与已有虚拟机状态路径均与 0.9.0 保持兼容。

安装 Barn · 下载 0.9.1 · 验证历史

变更

  • 源码构建、CI 与发行制品统一升级至 Go 1.27.3。go.mod 中的直接、间接及依赖测试模块均更新至截至 2026-10-22 的最新稳定版,包括 golang.org/x/crypto v0.58.0、x/net v0.61.0、x/sys v0.49.0、x/term v0.47.0 和 x/text v0.43.0。
  • Mac 原生应用由 Barn Mac.app 改名为 Barn.app,Bundle Identifier 更新为 com.pgsty.barn,菜单文案同步改为 Barn。0.9.1 CLI 仍兼容查找旧版 Barn Mac.app。原生协议版本保持为 2,虚拟机状态目录仍为 ~/.barn/mac。
  • 独立 Mac runner 采用 hardened runtime 签名,使用证书签名时自动请求安全时间戳。原生载荷校验除核对版本号、Git 提交与文件摘要外,还会校验 App 名称、Bundle Identifier 与主可执行文件。安装脚本与 Homebrew 配方模板均已同步至新路径。
  • 构建与静态检查工具升级至 GoReleaser 2.18.3(内置 nFPM 2.47.0)、独立 nFPM 2.48.0、Syft 1.55.0、Staticcheck 2026.2.2、deadcode 0.52.0、golangci-lint 2.15.0 和 govulncheck 1.9.0。GitHub Actions 继续按提交哈希固定版本,依赖许可证清单已与新工具链同步。

升级

使用下载安装脚本时请显式指定 0.9.1,或直接升级 Homebrew 配方与 Linux 软件包(具体命令见安装指南)。

替换原生组件前请先停止正在运行的 Mac 虚拟机,并将同一次构建产出的 CLI、hosts helper 与 App 一并更新(0.9.0 CLI 仅识别旧名称 Barn Mac.app)。桌面窗口位置改用 ~/Library/Preferences/com.pgsty.barn.plist 存储,首次打开时窗口位置可能重置;~/.barn/mac 下的虚拟机磁盘、凭据和配置保持不变,无需重建虚拟机或更新镜像目录。

0.9.1 发行包提供 macOS 与 Linux(arm64 / amd64)的 CLI 与 hosts helper 归档及 Linux DEB/RPM 软件包。如需使用 barn mac,请使用 Go 1.27.3 和 Xcode 27 从 v0.9.1 标签一并构建 CLI 与 Barn.app,详见 macOS 虚拟机指南。

从 v0.9.1 标签单独构建 CLI:

BARN_VERSION=0.9.1 make build
bin/barn version

构建、CI、虚拟机验收与签名范围详见 0.9.1 验证记录。

7 - Barn 0.9.0:原生 macOS 虚拟机与更顺畅的 Linux 恢复

Linux 实验环境、原生 macOS 虚拟机,以及更清晰的诊断与中断恢复。

发布日期:2026-09-30。 Barn 0.9.0 用同一套命令行工具管理 Linux 实验环境与原生 macOS 虚拟机,并改进了错误诊断与中断操作恢复。最新版本请参见 Barn 1.1.0。

安装指南 · 下载 0.9.0 发行包 · 完整变更记录

Apple Silicon 上的 macOS 虚拟机

barn mac 可创建命名的 macOS 27 虚拟机,支持原生桌面窗口、SSH、共享目录与文本剪贴板。首台机器从经过校验的 Apple 恢复镜像安装共享黄金母盘,后续机器通过 APFS 写时复制克隆母盘,各自拥有独立的可写磁盘、登录凭据与私有子网。

barn mac up
barn mac open
barn mac ssh

Mac 客机需要 Apple Silicon、macOS 27+ 以及使用 Xcode 27 从发行标签构建的原生应用包(构建步骤见 macOS 指南)。受 Apple Virtualization.framework 与软件许可限制,每台 Mac 最多同时运行两台 macOS 虚拟机(含其他工具启动的实例)。Mac 虚拟机状态独立存放在 ~/.barn/mac 下,不受 Linux 环境 destroy 或 purge 影响。

更顺畅的 Linux 环境恢复

重复执行 barn up 即可接续未完成的初始化:首次启动失败后修正配置可直接原位重试,中断的 destroy 也能继续完成。宿主机重启后,即便原 QEMU PID 被操作系统分配给其他无关进程,Barn 也能通过进程启动时间识别原虚拟机已停止,绝不会误杀无关进程。

并发修改命令最多等待十分钟并提示当前持有部署锁的操作,只读状态查询与 SSH 连接在此期间依然可用。执行计划现在会逐项列出节点的数据盘(包括默认挂载到 /data 的 128 GiB 数据盘)。

指向下一步的诊断信息

配置校验错误会定位具体规则、字段值与行号,并自动提示拼写近似的 vm_* 字段名。外部命令执行失败时保留 stderr 末尾的关键报错信息;JSON 错误输出统一使用固定 error 分类,并按需附带 reason 与 next 字段。

宿主环境准备在请求 sudo 权限前会先列出待安装的软件包与网络变更。若 ~/.ssh/config 是由 dotfile 工具管理的符号链接,Barn 会保持原文件不动,并打印需手动添加的 Include 指令。

更新的 Linux 镜像

内置镜像目录升级至 2026093001,涵盖 9 个发行版系列、41 个镜像产物。Debian 12/13 与 Rocky Linux 8/9 采用经过 Barn 规范化的镜像:Debian 预装离线 XFS 工具并生成 en_US.UTF-8(默认区域设置仍为 C.UTF-8);Rocky Linux 8 启用自带的 chronyd 服务,并在构建阶段完成 SELinux 标签写入,省去首次启动全盘重打标签的耗时。Ubuntu 保留 Canonical 官方镜像字节,默认客机系统仍为 Ubuntu 24.04(u24)。

barn image list
barn update

barn update 仅刷新本地 Linux 镜像目录,不会升级 barn 二进制或替换已有虚拟机磁盘。

升级注意事项

  • 命令行工具为 barn,默认配置文件名为 barn.yml,状态目录为 ~/.barn,环境变量前缀统一为 BARN_*。
  • 移除了 rm 别名;如需彻底删除整套 Linux 部署(含持久数据盘与密钥),请显式运行 barn purge。
  • JSON 错误结构调整:recreate_required 与 nodes_removed 归入 error: "conflict" 的 reason 字段,resource_conflict 简化为 resource,缺少配置文件或未知镜像统一返回退出码 2(usage),详见退出码参考。
  • stop 和 start 保留全部磁盘,recreate 替换根盘与非持久数据盘。数据盘在恢复过程中的自动重建规则见存储指南。

从 Linux 快速上手或 macOS 指南开始体验;遇到问题请在 GitHub Issues 中附上命令、Barn 版本、宿主平台与相关日志。

8 - Barn 0.8.0:恢复更顺畅,镜像更新

接续宿主准备、隔离失败节点、保留虚拟机身份,并更新九月 Debian 与 Ubuntu 镜像。
说明

本文为 0.8.0 历史发布记录。旧版发行附件已下线,安装当前版本请参见安装指南。

Barn 0.8.0 减少了初始化中断和部分节点启动失败后的手工清理工作,并在保留全部历史目录产物与已有虚拟机身份的前提下更新了九月 Debian 与 Ubuntu 镜像。

主要变化

  • 宿主准备自动接续原命令。 交互式 start、restart 与 reload 可自动补齐缺失的宿主工具并恢复未启动的 Barn 网络。macOS 首次配置网络时,会先查找或安装 Homebrew(或下载校验固定归档),随后再请求管理员认证,避免 Homebrew 清空此前获取的 sudo 凭据。
  • 单节点故障不再阻断独立节点。 up 与 start 期间若某个节点的宿主共享目录缺失,仅该节点报错停止,其余健康的已停止节点仍可正常启动。报错信息会同时列出宿主源路径和客机挂载点,不会创建空目录掩盖故障;restart、reload 与 recreate 会在停止运行中虚拟机前预先检查共享目录可达性。
  • 恢复过程保留节点身份。 部署公钥缺失时自动从现有私钥派生;私钥丢失时输出备份恢复指引,避免重新生成新密钥导致已有客机无法登录。macOS socket_vmnet 日志目录恢复时会保留网络归属标记,消除自身网段冲突误报。
  • 失败重试保留完整上下文。 重试提示会保留自定义 -f 清单路径、--repo 仓库参数与原命令名称(start 失败后仍提示重试 start)。宿主初始化与后续重试共享同一个操作 ID;即使尚未生成部署状态,也能写入和读取定长滚动事件日志;查询未缓存的镜像信息不再依赖 qemu-img。
  • 清理汇总准确反映最终状态。 显式删除持久盘或执行 purge 时,结果汇总不再将同一块磁盘同时列为保留和已删除。早先移除单节点遗留的受管磁盘也不再阻断整套实验环境的 destroy。

九月镜像

内置镜像目录 2026092001 包含 9 个系列共 37 个产物(完整保留此前全部 27 个产物),新增以下 amd64 与 arm64 稳定版镜像:

系列 系统版本 镜像目录版本
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 镜像预装离线 XFS 工具并生成 en_US.UTF-8 区域设置(默认仍为 C.UTF-8);Ubuntu 保留 Canonical 官方镜像字节,由 cloud-init 完成部署账户和网络配置。已有虚拟机与显式锁定版本的配置继续使用原基础镜像,仓库与目录更新机制见镜像参考。

安装或升级

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

升级已有实验环境时,先在配置目录运行 barn plan 预览变更,再执行 barn up。start 仅启动已有节点;up 则应用配置变更并重试未完成的客机初始化。数据盘在恢复过程中的自动重建规则见存储指南。

验证与限制

两台 macOS arm64/HVF(m1、m5)与两台 Linux amd64/KVM(m0、m3)宿主完成了七系统 pro 验收,每台宿主同时运行 Rocky Linux 9.8/10.2、Debian 12.15/13.7 与 Ubuntu 22.04.5/24.04.5/26.04.1。基线候选 6d7870e 从局域网仓库完成全新初始化,随后原位升级至运行时候选 1c054a0,依次通过健康状态下重复 up、stop/start、两轮客机 SSH、数据盘读写、Ansible 配置读取与控制节点横向 SSH(两台 Mac 额外通过全部七节点 Ansible ping),全程保持虚拟机 UUID、镜像身份及根盘/数据盘 inode 不变。

验收过程中的单次实测耗时(首次 up 含镜像下载):

宿主 平台 全新首次 up(6d7870e) 健康复跑 up(1c054a0) 已有磁盘 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

发布标签 v0.8.0(320a32afa8f6fca02592215aa0d5607ca4e852b2)相对受测运行时仅更新文档,已通过本地 make check、源码 CI、打包快照与标签工作流,生成的 20 项发行资产(19 个载荷与 checksums.txt)均已在 GitHub 预发布页完成下载与 SHA-256 校验。早期回归与镜像启动记录归档于 UX 审计与镜像更新记录。

两个官方镜像源均已同步签名目录 2026092001,隔离执行 barn update 均通过签名校验且全部 10 个新增镜像对象返回 HTTP 200。公开安装器已在 macOS arm64 与 Linux amd64 隔离目录完成二进制安装验证,Homebrew 软件源更新也已通过本地检查与 Homebrew CI。

0.8.0 已知限制:

  • 受上游 QEMU 在 Darwin 上的 virtfs 目录文件描述符实现限制,macOS 宿主暂不支持向 Linux 客机挂载共享目录;前置检查现已提前给出诊断提示。
  • 控制节点缺失客机私钥时,即便存在旧 ready 标记也会被检出并报告 control-ssh 限制;恢复节点间免密 SSH 仍需重建控制节点。完整实测矩阵见验证历史。

9 - Barn 0.7.0:简化测试环境,自动恢复故障

缩短首次启动路径、精简进度输出、独立初始化可选功能,统一通过 up 恢复。
说明

本文为 0.7.0 历史发布记录。旧版发行附件已下线,安装当前版本请参见安装指南。

Barn 0.7.0 简化了本地测试环境的首次启动与故障恢复:重复执行 barn up 即可接续中断的任务、重试未完成的客机初始化阶段,并在不重启虚拟机的情况下原位更新客机脚本。

主要变化

  • 缩短首次启动路径。 交互式 up 可自动生成默认配置、补齐缺失的宿主工具,并唤醒已安装但未运行的 Barn 网络。耗时短的检查保持安静,长任务实时显示进度并在结束时输出精简汇总。
  • 客机各阶段独立初始化。 数据盘、共享目录、客机主机名、节点间 SSH 与私网各自独立初始化。若某项可选功能失败,Barn 会明确报告受限项并保持管理网 SSH 可用;后续运行 up 时会自动跳过已健康的阶段。
  • 自动恢复测试数据盘。 正常的文件系统直接复用;无法识别或确认损坏的测试数据盘文件系统会自动重新格式化并挂载,同时在结果中明确报告旧数据已重置。探测失败、设备缺失、挂载正忙或底层 I/O 报错不会触发格式化。
  • 减少手工排障。 宿主无写权限的共享目录自动降级为只读挂载,权限修正后再次运行 up 即可恢复读写;已停止虚拟机的自动 SSH 转发端口若被占用会自动重新分配;中断的镜像下载支持断点续传与官方源自动故障切换,全程保持 SHA-256 摘要校验。
  • 精简输出并保持状态前向兼容。 客机警告信息单独存放在临时缓存中,不改动 schema-2 虚拟机状态文件与节点目录结构,旧版 CLI 仍可正常读取和管理环境。

升级说明

  • 故障恢复统一由 barn up 完成(不设单独的 repair 命令);start 继续仅启动已有节点而不应用配置变更,--no-wait 则跳过就绪检查与客机恢复步骤。数据盘恢复与重建规则详见存储指南。
  • 管理网 SSH 可用但存在可选功能受限时,命令返回退出码 0。要求全部功能就绪的自动化脚本请检查 --json 或 --yaml 输出中的 nodes[].warnings 与 nodes[].repairs 字段。
  • 若旧版 0.6.0 初始化中断时已删除了暂存的控制节点 SSH 私钥,up 会恢复管理网连接并报告 control-ssh 警告;如需使用节点间免密 SSH,请先用 barn plan 确认磁盘影响,再显式 recreate 该控制节点。

安装或升级

curl -fLO https://github.com/pgsty/barn/releases/download/v0.7.0/install.sh
chmod +x install.sh
BARN_VERSION=0.7.0 ./install.sh
barn version
barn up

本版本提供 macOS 与 Linux(amd64/arm64)归档、Linux DEB/RPM 软件包、安装脚本、校验清单、SBOM 与 Homebrew 配方。

验证范围

发布提交 9c6d4896d93733d1cb60a7e5d8591e9a06659c9d 已通过源码 CI、打包快照与标签工作流,共生成 20 项经校验的发行资产。公开安装脚本已在 macOS arm64 与 Linux amd64 完成 0.7.0 二进制安装验证,macOS 平台同时完成了 CLI 冒烟测试与交叉编译。

在 Ubuntu 26.04 amd64(KVM/QEMU 10.2.1)宿主与 Ubuntu 24.04 客机上,恢复测试覆盖了 ext4/XFS 文件系统损坏、持久盘保留、探测失败、挂载正忙、共享目录只读降级以及不重启 QEMU 进程的重复 up:

  • 因管理网出网探测失败而中断的 0.6.0 环境,在升级 0.7.0 后于 3.3 秒内恢复就绪,原有数据盘与 UUID 保持不变,且旧版 0.6.0 二进制仍能对其正常执行 status、stop、start 与 destroy。
  • 人为破坏的可丢弃 ext4 数据盘在 3.2 秒内自动完成重建与重挂载,明确报告数据重置且未中断虚拟机进程。

10 - Barn 0.6.0:默认 U24,更顺手的本地虚拟机体验

默认 Ubuntu 24.04,准备宿主前即可查看计划,状态更清晰,扩容与重建更可靠。
说明

本文为 0.6.0 历史发布记录。旧版发行附件已下线,安装当前版本请参见安装指南。

Barn 0.6.0 将默认客机镜像切换为 Ubuntu 24.04,并改进了本地 Pigsty 实验环境的计划预览、启动、扩容与节点重建体验。

主要变化

  • 默认使用 Ubuntu 24.04。 新生成的配置与内置镜像目录默认采用 u24:stable。目录修订版 2026090501 同时合入了官方仓库已发布的 Debian 12/13 与 Rocky Linux 8/9 规范化镜像更新。
  • 无需准备宿主即可预览计划。 对内置目录中的镜像执行 barn plan 时,无需预先安装 QEMU 或配置宿主网络(已导入的 local-* 本地镜像仍需 qemu-img 校验缓存)。执行计划会列出精确镜像版本、CPU/内存/磁盘资源总量、待启动节点、变更字段与磁盘影响,并在后续建议命令中自动保留自定义 -f 路径。
  • 状态表格与报错更清晰。 barn status 直接展示节点的镜像、CPU 与内存配置;单个节点的状态文件损坏不再遮蔽其余健康节点,报错会直接指出损坏的文件路径与原因。镜像摘要校验失败返回退出码 7,SSH 退出码 255 原样透传,--no-wait 会明确提示已跳过就绪检查。
  • 中断性操作前预先检查。 局部 recreate 会在删除磁盘前先检测其他节点的未应用配置冲突;reload 会在停机前先校验启动依赖。stop、destroy 与运行时清理在部署锁内一致地更新状态。
  • 客机 /etc/hosts 与 SSH 配置自动同步。 启动或移除节点后,Barn 会自动更新运行中客机内的受管 /etc/hosts 片段与控制节点 SSH 配置;同名节点重建后可直接免密连接,无需手动清理客机 known_hosts,同时完整保留用户自定义的 SSH 配置项与全局选项作用域。
  • 命令行解析更稳健。 init 指定自定义输出路径时会生成对应的下一步命令提示;输出格式参数不再误吞相邻选项值;非法整数容量与多文档 YAML 会直接报错拒绝而非静默截断;新增 ALL_PROXY/all_proxy 代理回退支持,优先级低于协议专用代理变量与 NO_PROXY。

升级说明

升级 Barn 不会替换已有虚拟机磁盘,也不会改动已显式指定 vm_image 的配置。若旧配置文件依赖早期的隐式 Debian 13 默认值,升级到 0.6.0 后请先在 all.vars 下显式加上 vm_image: d13 再执行 barn up。应用变更前请先通过 barn plan 预览。

修改 CPU 或内存仍通过 barn recreate 生效(替换根盘与非持久数据盘,保留持久数据盘)。--no-wait 会跳过就绪检查与客机元数据刷新,后续执行 barn up 即可补齐。自动化脚本请读取 --json 或 --yaml 结构化输出;部分节点状态读取失败时仍会返回健康节点列表与 failures 数组,退出码为 5。

安装或升级

curl -fLO https://github.com/pgsty/barn/releases/download/v0.6.0/install.sh
chmod +x install.sh
BARN_VERSION=0.6.0 ./install.sh
barn version
barn doctor

本版本同时提供四平台归档、amd64/arm64 DEB 与 RPM 软件包及 Homebrew 配方。完整上手步骤见快速上手教程。

验证范围

生命周期与交互变更通过了代码审查和完整的本地 make check 门禁。在隔离的 macOS arm64/HVF 环境上,实机验证了 Ubuntu 24.04 启动、节点扩容、控制节点横向 SSH、stop/start、reload、recreate、部分节点状态损坏容错与节点缩容;客机 SSH 配置作用域修复也通过了真实 OpenSSH 配置解析测试。

标签工作流完整复跑了源码门禁,并校验了全部归档、Linux 软件包、SBOM、安装脚本、Homebrew 配方、发布元数据与 SHA-256 校验和。

11 - Barn 0.5.0:显式处置、显式仓库、可复现镜像

无需确认的整套实验环境清理、全球与中国仓库显式选择、无隐式产物回退,以及八目标官方镜像候选构建流程。
说明

本文为 0.5.0 历史发布记录。0.7.0 已支持官方镜像源自动故障切换,0.9.0 已移除 rm 别名。旧版发行附件已下线,当前版本用法请参见 CLI 参考与安装指南。

Barn 0.5.0 新增了一键彻底清理实验环境的 purge 命令,支持显式选择全球或中国大陆镜像仓库,并为官方客机镜像引入了可复现的离线构建流水线;Pigsty 清单约定、部署状态格式与内置镜像目录修订版 2026082903 保持不变。

主要变化

  • barn purge(0.5.0–0.8.0 中含别名 barn rm) 无需交互确认即可一次删除整套 Linux 部署、持久数据盘、部署密钥、状态文件与默认 SSH 配置片段,同时保留共享镜像缓存与宿主全局网络。当前无部署时执行会自动幂等成功;若残留节点目录无法确认归属,Barn 会中止删除以保护未知文件。
  • 显式选择镜像仓库。 发行二进制默认使用全球源 https://repo.pigsty.io/barn,传入 --mirror 可切换至中国大陆镜像源 https://repo.pigsty.cc/barn。优先级依次为 --repo、--mirror、BARN_REPO 与编译默认值,两个官方入口共用同一套签名镜像目录校验。
  • 严格校验仓库产物。 镜像目录中记录的上游 URL 仅作构建溯源,不再作为隐式下载回退地址。所选仓库必须提供目录指定的 .qcow2 文件,否则拉取直接报错并提示切换仓库或导入本地镜像。
  • 摘要锁定的离线镜像构建器。 源码仓库新增针对 Debian 12/13 与 Rocky Linux 8/9(amd64/arm64)的离线规范化构建器,自动记录精确软件包闭包、SBOM、来源清单与 testing 清单,可组装未签名候选仓库供真机启动测试与签名发布使用。
  • 工具链升级。 源码与发布工具链升级至 Go 1.27.1、GoReleaser 2.18.0、golangci-lint 2.13.2 及最新 Go 依赖模块。

镜像规范化流水线

八目标构建矩阵补齐了各发行版客机的前置依赖:

  • Debian 12/13:预装离线 XFS 用户态工具,支持显式挂载 xfs 数据盘。
  • Rocky Linux 8:补齐 /usr/bin/python3,修复 sshd_config.d 配置片段加载规则,并清理遗留网卡命名状态。
  • Rocky Linux 9:同步清理遗留网络接口状态。

候选镜像在完成真机启动/就绪冒烟测试、双构建一致性比对、生产签名与目录发布前保持未签名与 testing 状态(已于 0.6.0 正式纳入内置目录)。

升级与清理

从 0.4.0 升级无需迁移状态、清单或镜像目录,已有缓存镜像可继续使用。仅在需要无提示彻底丢弃全部部署磁盘与密钥时使用 barn purge;如需保留持久数据盘或仅删除指定节点,请继续使用带确认的 barn destroy。

验证范围

发布提交 fc85b65ff6a24b0933b56ae1179be9ada2ba91b1 已通过完整本地源码门禁(涵盖模块与 Shell 检查、单元测试、竞态测试、go vet、Staticcheck、deadcode、errcheck、govulncheck、四目标交叉构建、镜像流水线与安装器测试、依赖许可证核验及 GoReleaser 2.18.0 校验),标签工作流构建并验证了全部平台归档、DEB/RPM 软件包、SBOM、Homebrew 配方、安装脚本、发布元数据与 SHA-256 校验和。

安装或升级

从 Barn 0.5.0 GitHub 发布页下载安装脚本与发行资产:

curl -fLO https://github.com/pgsty/barn/releases/download/v0.5.0/install.sh
chmod +x install.sh
BARN_VERSION=0.5.0 ./install.sh
barn version
barn doctor

同一预发布页同时附带 Homebrew 配方与 amd64/arm64 DEB/RPM 软件包。

12 - Barn 0.4.0:一条命令、能用的数据盘、统一的输出

首次运行只需一条命令,默认数据盘在所有镜像上可用,就绪失败直接给出原因,全部命令统一输出风格。
说明

本文为 0.4.0 历史发布记录。旧版发行附件已下线,安装当前版本请参见安装指南。

Barn 0.4.0 将首次使用收敛为一条命令,修复了 Debian 与 Ubuntu 镜像上默认数据盘因缺少 xfsprogs 无法格式化的问题,并统一了全套 CLI 的输出风格;Pigsty 清单格式、固定 IP 部署模型、状态目录结构与内置镜像目录修订版 2026082903 保持不变。

主要变化

  • 一条命令完成首次启动。 在交互式终端中,若宿主机尚未安装固定 IP 网络,运行 barn up 会自动调用 barn setup:先展示宿主准备计划并在提权步骤前请求确认,完成后直接继续启动虚拟机。barn init 的下一步提示同步更新为 barn up。
  • vm_disks[].fs 默认值改为 auto。 空白数据盘在客机具备 mkfs.xfs 时格式化为 XFS,否则自动回退为 ext4,与 Pigsty 的 Vagrant 行为保持一致。此前默认硬编码 xfs 会导致未预装 xfsprogs 的上游 Debian 与 Ubuntu 镜像挂载失败。按旧默认值创建的既有部署不会被判为配置漂移,持久盘保持兼容。
  • 客机初始化报错直达原因。 客机错误标记现会记录失败命令的最后一行输出,因此 up 会直接报告 guest bootstrap failed during data-disks: xfs requested but mkfs.xfs is unavailable,而不再只返回退出码。
  • 统一 CLI 输出风格。 生命周期命令与 status 统一打印节点状态表,并在 up 完成后提示 next: barn ssh <node>。无变更时 plan 与 validate 仅输出一行简短结论;image list、network status、doctor 与预检报错改为直接输出自然语言说明(spec hash 等内部字段仅在 --json 中输出)。当传入未知节点名时,报错信息会一并列出当前可用节点。
  • SSH 远程命令原样透传。 barn ssh <node> -- 'df -h /data; id' 会按 OpenSSH 标准方式原样传递远程命令字符串。

升级说明

对于由 0.3.0 或更早版本创建且 /data 未能成功挂载的 Debian 12/13 或 Ubuntu 节点,执行一次 barn recreate <node> 即可将数据盘格式化为 ext4 并完成挂载。在无 TTY 的自动化环境中,若宿主机尚未初始化网络,运行 up 前仍需先执行 barn setup --yes。

验证范围

源码提交 8ecb8476c7dbc934d8cbbee935ac53884d00fcdb 已通过完整本地源码门禁(涵盖单元测试、竞态测试、go vet、Staticcheck、deadcode、errcheck、govulncheck、Shell 与模块检查、四目标交叉构建、镜像流水线与安装器测试及依赖许可证校验),标签工作流构建并验证了全部归档、原生软件包、SBOM 与安装脚本。各阶段的 macOS arm64/HVF 与 Ubuntu amd64/KVM 实测记录见验证历史。

安装或升级

从 Barn 0.4.0 GitHub 发布页下载安装脚本与发行资产:

curl -fLO https://github.com/pgsty/barn/releases/download/v0.4.0/install.sh
chmod +x install.sh
BARN_VERSION=0.4.0 ./install.sh
barn version
barn doctor

同一预发布页附带 Homebrew 配方与 amd64/arm64 DEB/RPM 软件包。

13 - Barn 0.3.0:显式 Catalog 与可操作的就绪诊断

显式镜像目录更新、逐节点初始化诊断、发行版原生客机网卡名与精简的 CLI。
说明

本文为 0.3.0 历史发布记录。旧版发行附件已下线,安装当前版本请参见安装指南。

Barn 0.3.0 取消了隐式后台刷新镜像目录的行为,支持按节点报告客机初始化失败阶段与排查命令,并在保留 Pigsty 清单与固定 IP 部署模型的前提下精简了 CLI 命令集。

主要变化

  • 显式更新镜像目录。 up、plan 与日常 image 子命令固定读取当前激活的本地镜像目录快照,不再后台拉取远端目录元数据。使用 barn update 可显式从配置仓库拉取最新签名目录,使用 barn image sync 可激活指定 URL 或本地目录文件。
  • 逐节点报告初始化故障。 客机引导过程以原子方式记录当前所处阶段;操作部分失败时会逐一列出失败节点、所处阶段与错误信息,就绪超时直接提示执行 barn logs <node> 查看串口与引导日志。
  • 运行中客机免重启复检。 已在运行的客机无需重启 QEMU 即可重新执行就绪检查;部分节点失败后,Barn 仍会根据全部已提交节点更新宿主机 SSH 客户端配置。
  • 保留发行版原生网卡名。 Netplan 直接按确定性 MAC 地址匹配网卡,不再重命名客机网络接口;vm_disks[].fs: auto 优先使用 XFS,缺失工具时自动回退至 ext4。
  • 精简命令与参数。 移除冗余的 ss 子命令及易混淆的短参数别名,barn image reset 取代 reset-manifest(旧命令保留为兼容别名)。

验证范围

源码提交 da6d02426da93c677c94c67fec4eb4fcecf4766a 已通过完整本地源码门禁与 GoReleaser 全量快照构建(涵盖单元测试、竞态测试、go vet、Staticcheck、govulncheck、四目标交叉构建、镜像流水线与安装器测试、归档与软件包一致性、依赖许可证、SBOM 及 Linux 原生软件包校验),标签工作流在发布前完整复跑了上述检查。各阶段的 macOS arm64/HVF 与 Ubuntu amd64/KVM 实测记录见验证历史。

安装或升级

从 Barn 0.3.0 GitHub 发布页下载安装脚本与发行资产:

curl -fLO https://github.com/pgsty/barn/releases/download/v0.3.0/install.sh
chmod +x install.sh
BARN_VERSION=0.3.0 ./install.sh
barn version
barn doctor

同一预发布页附带 Homebrew 配方与 amd64/arm64 DEB/RPM 软件包,直接兼容 0.1.0 与 0.2.0 的部署与镜像目录状态。

14 - Barn 0.2.0:选点收敛与发布完整性

VPN 感知网络预检、选定节点扩容、基于已提交状态的集成、CI 多平台产物与 0.1.0 升级边界。
说明

本文为 0.2.0 历史发布记录。旧版发行附件已下线,安装当前版本请参见安装指南。

Barn 0.2.0 延续了 0.1.0 的 Pigsty 清单与磁盘部署格式,修复了真机回归测试中发现的 VPN 宽泛路由误拦与指定节点增量收敛问题。

主要变化

  • VPN 感知的路由预检。 10.0.0.0/8 等前缀更短的 VPN 排除路由不再误拦 Barn 专属的 10.10.10.0/24 子网;当存在相同或更具体的外部路由、接口重叠、IP 地址被占用或自有路由缺失时,预检仍会拒绝启动。
  • 真正的按节点按需收敛。 barn up <node> 仅下载并准备目标节点所需的镜像与磁盘。清单中尚未创建的节点显示为 absent;SSH 配置、/etc/hosts、客机引导、UUID 与端口分配、生命周期命令及持久盘检查均严格基于已提交的节点集合,同时保留完整清单定义供后续扩容使用。
  • 更新客机 /etc/hosts 归属标记。 新创建的客机统一写入 # barn-deployment-host 标记,并在更新 hosts 条目前自动清理该标记及 0.1.0 遗留的 # barn-project-host 标记。
  • 交互与工程细节改进。 集成了命令取消信号处理、结构化 JSON/YAML 输出、交互确认、barn reload、诊断信息脱敏以及依赖树精简。

真机与发布证据

  • macOS arm64/HVF(开启 MonoProxy):完成指定节点 u24-1 创建、SSH、stop/start、增量扩容已缓存的 el9-1、双节点横向 SSH(其余 5 个节点保持 absent)及整套部署销毁验证。
  • Ubuntu 26.04 amd64/KVM:使用发行版 Linux 二进制对现存四节点部署完成了无损状态巡检与控制节点 SSH 登录验证。
  • CI 与打包:通过本地 make check、源码 CI 与完整打包工作流,生成四平台归档、amd64/arm64 DEB 与 RPM 软件包、SPDX SBOM、Homebrew 配方、install.sh、SHA-256 校验清单与发布元数据。
  • 镜像目录:内置签名目录修订版 2026082903(涵盖 9 个发行版系列、27 个分架构产物),0.2.0 默认使用 https://repo.pigsty.cc/barn,同时验证了备用源 https://repo.pgsty.com/barn。

安装或升级

从 Barn 0.2.0 GitHub 发布页下载 install.sh 与发行资产:

chmod +x install.sh
BARN_VERSION=0.2.0 ./install.sh
barn version
barn doctor

0.1.0 的部署状态可直接读取;在已有虚拟机运行时执行一次 barn status 即可补齐进程启动时间戳,既有客机在下次重建时会自动采用新的 /etc/hosts 标记。

15 - RC6 开发候选:Owner-scope Tier 1 交付

RC6 准确身份、四个原生产品场景验证、可持久恢复的网络事务、可复现本地归档,以及未公开发布的范围。
说明

Barn 前身历史归档(Piglet 1.0.0-rc.6,2026-08-25)。该候选版为本地验收里程碑,未创建公开 GitHub Release 或软件包仓库,下方 SHA-256 摘要用于记录当时的本地构建产物。当前 Barn 的用法与支持范围请参见使用文档与支持状态。

Piglet 1.0.0-rc.6 是在两类 Tier 1 原生虚拟化平台(macOS arm64 / HVF 与 Linux amd64 / KVM)上完成 Quick 及四节点 full 场景验收的本地开发候选版,并引入了基于持久化事务日志的特权网络安装与崩溃恢复机制。

冻结构建身份

字段 RC6 值
版本 1.0.0-rc.6
源码提交 7db733184463cc189ffa738335c213fc9a2982de
Go go1.27.0
源码时间戳 1787657920
构建时间戳 2026-08-25T11:38:40Z
通道 development
签名 / 证明 false / false
指定 full 配置模板 SHA-256 912fea61bf1602c2a437570561a6ab4d0a5a8c152695147ad9e96ae831bc9336

四个原生产品场景

宿主 场景 结果 客机约定
macOS arm64 / HVF Quick PASS Ubuntu 24.04.4、dba UID/GID 88、2 vCPU、64 GiB 根盘、64 GiB /data
Linux amd64 / KVM Quick PASS Ubuntu 24.04.4、dba UID/GID 88、2 vCPU、64 GiB 根盘、64 GiB /data
macOS arm64 / HVF 指定 full PASS .10–.13、UID 88、64 GiB 根盘、128 GiB 数据盘、2/1/1/1 vCPU、四节点互通
Linux amd64 / KVM 指定 full PASS .10–.13、UID 88、64 GiB 根盘、128 GiB 数据盘、2/1/1/1 vCPU、四节点互通

八台 full 场景客机全部正常启动 Ubuntu 24.04.4 并通过契约断言;测试结束后通过 CLI 正常销毁项目,并按预期保留了共享镜像缓存、项目标记与密钥。

持久化原生网络事务

宿主网络安装与卸载采用由 root 持有、严格限定路径前缀的事务模型:

  • root 规划阶段生成绑定调用用户、宿主身份与变更前状态的令牌;
  • 执行阶段在宿主全局锁内重新校验计划,且仅接受该令牌;
  • 任何宿主配置修改开始前,先写入结构化事务日志并执行 fsync 落盘;
  • 每个固定步骤仅在后置条件校验通过后记录检查点;
  • 若事务中途中断,普通网络变更会被锁定,直至显式批准继续执行(forward)或回滚(rollback)恢复计划。

macOS 宿主通过了真实中断后的继续恢复验证,最终收敛至受保护的默认 host 模式;Linux 宿主完成了真实安装、回滚重试、四节点运行、卸载与宿主还原测试,并在最后合入了收紧套接字状态规范化、systemd 单元启用范围、NetworkManager 顺序及恢复字段范围的补丁(通过全量源码检查与 -race 竞态测试)。

macOS Shared Mode 与子网冲突处理

macOS 默认支持模式为 socket_vmnet host 模式;shared 模式作为需显式指定的备选模式,也在空闲替代子网上通过了双节点契约验证。

测试期间,当宿主机残留旧版创建的 bridge100 接口时,默认子网会触发 VMNET_SHARING_SERVICE_BUSY (1009)。网络预检严格凭接口归属标记识别自有网卡,绝不会仅因现有网卡配置了 .1/24 地址就直接接管。遇到子网冲突时,操作者可清理占用接口,或将整套实验环境显式迁移至另一个规范的 RFC 1918 /24 子网——运行时绝不会单独改动客机 IP 或随机挑选子网。

可复现本地归档

两次独立执行的本地 RC6 构建产出了字节完全一致的四平台归档、校验和、发布元数据与 Homebrew 配方:

归档 SHA-256
Darwin amd64 1295288ff198b53fcb761a6e8794087d75a46105fc19980fabcd44f0c70fb9ef
Darwin arm64 308310b0f2d179f98c8be78ea09f89d226167072c936387bc42d717a922ec0c6
Linux amd64 547a61f6cc0768071df349cbf5c17d7ddfe3ab3cea59e6b4026e3e3e616a5550
Linux arm64 afc9ce1043d377cc3b4ef8bdf77826a8139a8c839685025853e8bee8100c6a2e

公开发布前待办项

在 RC6 节点上,距离公开发布尚余以下工作:

  • 两类 Tier 1 宿主的物理重启持久性验证
  • macOS amd64 与 Linux arm64 原生冒烟测试
  • 包含最终补丁的 Linux 网络安装/卸载/重装真机重放
  • 客机镜像规范化构建、线上托管与主备清单密钥管理
  • 正式发布标签、Homebrew 软件源与 DEB/RPM 渠道发布及全新宿主安装验证

后续 Barn 版本对上述工作的落地情况请参见快速上手、架构设计与支持状态。

16 - 开发快照:Go 1.27 产品能力面

Quick 与四节点 Private 行为、格式 3 的自有配置模板、Pigsty 清单集成、持久化、状态迁移与已验证的发布机制。
说明

Barn 前身历史归档(Piglet,2026-08-24)。该快照时间点尚无公开版本标签、生产签名产物或软件包仓库,所有内置镜像条目均标为 testing。当前 Barn 的设计与支持状态请参见使用文档与支持状态。

2026-08-24 源码快照将早期的 QEMU 原型演进为完整的 Go 1.27 本地虚拟机管理工具,具备零配置 Quick 模式、固定 IP 私有实验网、13 份内置配置模板、Pigsty 清单生成、持久数据盘、状态格式迁移与可复现打包流水线。

单一原生虚拟化运行时

Piglet 在 macOS 上通过 HVF、在 Linux 上通过 KVM 直接以当前用户身份驱动原生 QEMU,不回退到 TCG 软件模拟,也不接受任意透传的 QEMU 命令行参数。运行时负责校验镜像摘要与 .qcow2 文件头、生成纯 Go 实现的 NoCloud cidata 引导镜像、核对 QMP 与进程身份、检查 SSH 就绪状态,并维护原子状态文件、事务日志与事件记录。

两类 Tier 1 宿主上的 Quick 模式

无需编写 YAML 的 Quick 模式在 macOS arm64 与 Linux amd64 上均已完成验证,默认启动单台 meta 客机(dba 用户、2 vCPU、4 GiB 内存、64 GiB 根盘、稀疏 64 GiB /data 数据盘、用户态 NAT、SSH 及四条本地回环端口转发),支持 plan、up、status、ssh/exec、stop/start/restart、配置漂移识别、带保护的 recreate/destroy、--no-wait、持久盘保留、密钥轮换、日志查看、故障修复与脱敏诊断包导出。

私有实验网与宿主网络管理

Private 模式在两类 Tier 1 宿主上提供统一的 preflight、status、install 与 uninstall 操作:

  • macOS:固定使用 socket_vmnet v1.2.2(默认 host 模式,同时验证了 shared/FD 路径)。
  • Linux:采用可回滚的 systemd-networkd / NetworkManager / qemu-bridge-helper 事务。

两类宿主上的 QEMU 均以非特权用户运行,且在全局租约有效期间阻止卸载网络。操作者可显式指定一个规范的 RFC 1918 /24 子网替换默认的 10.10.10.0/24,并同步迁移配置模板、宿主网络、租约、节点地址与 Pigsty 清单。

四节点 full 与 MinIO 配置在两个 Tier 1 平台上完成了固定 IP、控制节点横向 SSH、管理网出网、存储身份、stop/start 持久性、崩溃恢复、30/30 连续耐久测试以及 16 块数据盘挂载验证。

Schema-3 配置模板与 Pigsty 清单集成

13 份内置 Schema-3 配置模板共定义 85 个节点(统一使用 dba 账户;普通节点挂载一块 128 GiB /data 数据盘,MinIO 节点挂载四块 32 GiB 数据盘)。piglet pigsty inventory 可直接读取 Pigsty 源码树,校验宿主/VIP/管理/服务地址语义,完成自定义子网地址重映射,并原子写入权限为 0600、带归属标记的清单文件;pigsty-vm 则通过一组强类型环境变量暴露相同的生命周期接口。

持久化、状态迁移与自动化接口

  • 持久数据盘:标记 persistent: true 的磁盘在普通 destroy 与兼容 recreate 中予以保留;彻底删除需在 TTY 中输入确认短语或显式传入 destroy --force --delete-persistent --yes-delete-persistent。项目密钥清理默认仅预览,实际删除需执行 project purge-keys --yes。
  • 状态格式迁移:Schema 0 -> 1 迁移要求所有节点已停止且无活动租约,先自动备份再通过 project upgrade-state --dry-run|--yes 原子更新。
  • 自动化支持:提供节点选择器、--no-wait、结构化 JSON 输出、分类退出码、Shell 补全、受管 SSH 与 /etc/hosts 片段、逐节点日志及脱敏诊断包。

镜像矩阵与发布打包机制

内置镜像集覆盖 el9、el10、d12、d13、u22、u24 与 u26 的 amd64 和 arm64 架构(双架构 7/7 全部通过启动验证;el8 在后续 Barn 版本完成规范化后重新加入)。构建工具链支持生成并校验四平台归档、Homebrew 配方、Linux amd64/arm64 DEB 与 RPM 软件包、SHA-256 校验清单、SPDX SBOM 以及 Cosign/SLSA 签名测试夹具,并通过了双次构建可复现性比对。

后续在 RC6 与 Barn 0.x 中的演进

由于 Schema-3 模板目录与清单集成在首轮 full/MinIO 测试后更新了摘要,精确模板的真机重放、自定义子网 /etc/hosts 发布以及 storage.data_root / ssh.wait_timeout 接线在次日的 2026-08-25 RC6 候选中全部补齐;随后项目在 Barn 0.1.0+ 中进一步收敛为单一的 Pigsty 原生 barn.yml 清单模型。当前 Barn 的设计与使用方式见快速上手、架构设计与支持状态。