# Barn 0.8.0：恢复更顺畅，镜像更新

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

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

> [!NOTE]
> 本文为 `0.8.0` 历史发布记录。旧版发行附件已下线，安装当前版本请参见[安装指南](/zh/docs/start/installation/)。

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

## 主要变化 {#what-changed}

- **宿主准备自动接续原命令。** 交互式 `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`。

## 九月镜像 {#september-images}

内置镜像目录 `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` |
{.wide .expand}

Debian 镜像预装离线 XFS 工具并生成 `en_US.UTF-8` 区域设置（默认仍为 `C.UTF-8`）；Ubuntu 保留 Canonical 官方镜像字节，由 `cloud-init` 完成部署账户和网络配置。已有虚拟机与显式锁定版本的配置继续使用原基础镜像，仓库与目录更新机制见[镜像参考](../../../docs/reference/images/)。

## 安装或升级 {#install-or-upgrade}

```bash
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` 则应用配置变更并重试未完成的客机初始化。数据盘在恢复过程中的自动重建规则见[存储指南](../../../docs/start/storage/)。

## 验证与限制 {#validation-and-limits}

两台 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 |
{.wide .expand}

发布标签 `v0.8.0`（`320a32afa8f6fca02592215aa0d5607ca4e852b2`）相对受测运行时仅更新文档，已通过本地 `make check`、[源码 CI](https://github.com/pgsty/barn/actions/runs/35568664994)、[打包快照](https://github.com/pgsty/barn/actions/runs/35568664948)与[标签工作流](https://github.com/pgsty/barn/actions/runs/35569143101)，生成的 20 项发行资产（19 个载荷与 `checksums.txt`）均已在 [GitHub 预发布页](https://github.com/pgsty/barn/releases/tag/v0.8.0)完成下载与 SHA-256 校验。早期回归与镜像启动记录归档于 [UX 审计](https://github.com/pgsty/barn/blob/v0.8.0/UX-AUDIT-0.8.md)与[镜像更新记录](https://github.com/pgsty/barn/blob/v0.8.0/IMAGE-REFRESH-20260920.md)。

两个官方镜像源均已同步签名目录 `2026092001`，隔离执行 `barn update` 均通过签名校验且全部 10 个新增镜像对象返回 HTTP 200。公开安装器已在 macOS `arm64` 与 Linux `amd64` 隔离目录完成二进制安装验证，[Homebrew 软件源更新](https://github.com/pgsty/homebrew-infra/commit/9c3401958a435248ebf0e5402e7efff712ee1c4c)也已通过本地检查与 [Homebrew CI](https://github.com/pgsty/homebrew-infra/actions/runs/35570285428)。

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