这是本节的多页打印视图。 .
命令参考
- 1: 准备与工具
- 2: Linux 生命周期
- 3: 客机访问与 hosts
- 4: 镜像命令
- 5: 仓库命令
- 6: 宿主网络命令
- 7: macOS 命令
从下表选择命令,查看参数、完整局部选项、示例与操作范围。组织方式参考 PIG 的命令索引与命令组详解;结构化输出及退出码见 CLI 契约,清单字段见配置参考。
版本基线
本参考对应 2026-11-12 发布的 Barn 1.2.0,源码为 90f6158。中英文页面均已对照 CLI 帮助核对,覆盖 57 个操作命令与 174 项局部选项。
| 标记 | 可用范围 | 行为 |
|---|---|---|
| 1.1.0 | 1.1.0 与 1.2.0 均支持的选项 | 1.1.0 默认 2 vCPU / 4 GiB,通过清单调整 CPU/内存 |
| 1.2.0 | 1.2.0 新增 | 规格选项与环境变量、vm_scale、根盘扩容、生命周期 --parallel、vm_hosts 和 hosts install -f;默认规格改为 1 vCPU / 2 GiB |
升级时如需保留旧默认值,请显式设置 vm_cpu: 2、vm_mem: 4GiB,并检查 barn plan。已应用 VM 的资源会保留到显式执行资源变更操作为止。用 barn version 和 barn COMMAND --help 核对已安装构建;另见发布说明与发布验收。
命令索引
| 任务 | 命令与详细参考 |
|---|---|
| 准备环境 | setup、init、validate、doctor |
| 规划与创建 | plan、up |
| 启停节点 | start、stop、restart、reload |
| 调整与检查 | resize、recreate、status |
| 删除部署 | destroy、purge |
| 访问 Linux 客机 | ssh、exec、logs、provision、ssh-config |
| 发布宿主名称 | hosts install、hosts uninstall |
| 刷新目录 | update、image sync、image reset |
| 管理 Linux 镜像 | image list、info、pull、import、prune |
| 维护镜像仓库 | repo scan、build、verify |
| 宿主网络 | network status、install、uninstall |
| 原生 macOS VM | mac ls、up、start、stop、restart、configure、recreate、destroy |
| Mac 访问 | mac open、ssh、exec、password、ssh-config、logs |
| Mac 准备 | mac setup、doctor、image ls、image update、image prune |
| CLI 工具 | version、completion、help |
全局选项
| 选项 | 含义 |
|---|---|
-h、--help |
显示所选命令的可读帮助,退出 0 |
--json |
stdout 输出结构化 JSON,进度与诊断保留在 stderr |
--yaml |
stdout 输出结构化 YAML,与 --json 互斥 |
-v、--verbose |
向 stderr 输出有界诊断信息 |
--version |
根命令的版本快捷选项;结构化版本报告用 barn version --json |
全局输出选项可放在子命令前后,但必须在 ssh、exec 使用的远程命令分隔符 -- 之前。-f、-I、-A、-p、--yes 都是局部选项,以对应命令的表格为准。logs -f 表示跟随日志,mac logs -n 表示行数。长布尔选项支持 =true 或 =false。
BARN_OUTPUT、BARN_VERBOSE 设置输出默认值。BARN_HOME 选择私有状态目录,默认 ~/.barn,跨目录操作时建议使用绝对路径。Linux 与 Mac 机器共用数据根目录,但生命周期相互独立。详见环境变量与退出码。
barn 与帮助
无参数时,文本模式打印完整帮助并退出 0,JSON/YAML 模式返回建议操作 actions[]。显式帮助始终输出可读文本。image、repo、network、hosts、mac image 命令组要求子命令,缺少时退出 2;mac 是例外,默认执行 mac ls。Linux 和 Intel Mac 的根帮助隐藏 mac,但仍可显式查看 Mac 命令帮助。
简写在父命令范围内生效,例如 barn im ls 等同 barn image list,barn mac st 等同 barn mac ls;各命令页列出了对应别名。purge 没有 rm 别名。
1 - 准备与工具
生成清单、准备宿主、校验配置,以及查看版本和生成补全脚本。
本参考对应 Barn 1.2.0;选项表区分 1.1.0 已有选项 与 1.2.0 新增选项,具体范围见版本基线。所有命令继承全局选项。
barn setup
准备宿主软件包、固定 IP 网络、镜像与所选清单,然后运行 barn up 创建 Linux VM。meta、dual、trio、full 模板分别包含 1、2、3、4 个节点;未指定模板或 -f 时复用发现的清单,没有清单才生成 meta。-c 与规格选项用于生成模板,显式规格选项不能用来改写已有清单;1.2.0 复用清单时也忽略规格环境变量。
--dry-run 预览整个事务。执行需要终端确认或 --yes,系统提权仍可能询问密码。新生成且未经编辑的默认模板遇到子网冲突时,setup 可以选择空闲私有 /24,并将原模板备份为 barn.yml.before-network-change;显式清单保留原子网。Linux 宿主运行异架构客机时,需要另外安装目标 QEMU 模拟器与固件。
别名:s。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-c, --cidr string |
规范的 RFC1918 IPv4 /24 子网;模板与网络安装默认 10.10.10.0/24 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
-d, --dry-run |
仅预览计划,不修改状态 | 1.1.0 |
-f, --file string |
要准备的清单;不能与模板位置参数同时使用 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
--mirror |
使用中国官方源 https://repo.pigsty.cc/barn;显式 --repo 优先 |
1.1.0 |
-m, --mode string |
macOS 的 socket_vmnet 模式:host(默认)或 shared |
1.1.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
-y, --yes |
确认并执行显示的计划;系统 sudo 仍可能要求密码 |
1.1.0 |
barn init
生成兼容 Pigsty 的 YAML 清单,默认在 ./barn.yml 写入单节点 meta 模板,控制节点地址为 .10;dual、trio、full 依次增加 .11、.12、.13 节点。覆盖已有文件必须加 --force,-o - 将清单输出到 stdout。本命令不下载镜像或准备宿主。
稳定版 1.1.0 每节点默认 2 vCPU、4 GiB,1.2.0 为 1 vCPU、2 GiB;两者均默认 64 GiB 根盘和独立的 128 GiB /data 盘。1.2.0 模板保存六项规格字段,包括 vm_scale。详见规格默认值。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-c, --cidr string |
规范的 RFC1918 IPv4 /24 子网;模板与网络安装默认 10.10.10.0/24 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
--force |
覆盖目标清单文件;默认保留已有文件 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
-o, --output string |
目标文件,默认 ./barn.yml;- 表示输出到 stdout |
1.1.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
barn validate
读取清单并校验 Barn 使用的字段,输出解析后的节点;不接受节点位置参数。未指定 -f 时依次在当前目录寻找 barn.yml、barn.yaml、pigsty.yml、pigsty.yaml;找不到清单就报错,即使存在已应用状态也不回退。覆盖参数仅对本次校验生效,--json 可查看解析后的规格,与现有部署比较则用 plan。
别名:v。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
-f, --file string |
要校验的清单;省略时在当前目录发现,不回退到已应用状态 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
barn doctor
检查 QEMU、原生加速、固件、OpenSSH、短暂的加速启动测试和宿主网络;不接受清单或节点参数。缺少计算能力时命令失败,尚未准备网络则作为提示报告。网络细节用 barn network status 检查,原生 macOS VM 用 barn mac doctor。
别名:dt。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn version
输出版本、源码提交、构建时间、宿主操作系统与架构。1.2.0 通常显示 dev,正式版本标识来自构建时写入的信息。核对文档或提交问题时保留这份输出,也可用根命令的 barn --version。
别名:ver。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn completion
必须指定 bash、zsh、fish 或 powershell 中的一种 shell,将补全脚本输出到 stdout;命令本身不安装脚本。补全涵盖各命令的选项、模板、镜像别名与可读取的节点名,升级 Barn 后应重新加载。加载 shell 代码时使用文本输出。
除 --help 外没有局部选项,仍可使用全局输出选项。
实现依据
command_setup.go · command_misc.go · command_root.go
发布源码与相对 1.1.0 的变化见版本基线。
2 - Linux 生命周期
规划、创建、启停、调整、查看和显式删除 Linux 虚拟机。
本参考对应 Barn 1.2.0;选项表区分 1.1.0 已有选项 与 1.2.0 新增选项,具体范围见版本基线。所有命令继承全局选项。
节点参数使用 meta、node-1 等解析后的名称,省略时选择该命令清单或已应用范围内的全部节点;IP、组名、vm_alias 均不能作为选择器。plan、up、reload、resize、recreate 依次读取 -f、当前目录清单、已应用状态,其他生命周期命令直接使用已应用状态。
规格覆盖、缩放和环境变量见配置参考。1.2.0 并发选项只适用于下文列出 --parallel 的命令,plan、resize、status 不接受它。结构化结果与退出码见 CLI 契约。
barn plan
将有效期望清单与已应用状态比较,输出精确镜像、资源、逐盘动作,以及需要创建、调整资源、重建、启动或显式移除的节点,不改变 VM 或下载镜像。目录镜像仅需本地元数据,具名本地镜像还需要 qemu-img。
退出码 0 表示成功生成计划,也可能是因清单遗漏节点而阻塞的计划;脚本需检查 action、blocked 和变更数组。显式选择节点时保留其他节点的已应用定义。结果格式见计划输出。
别名:pl。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
-f, --file string |
显式清单路径;生命周期命令依次使用该文件、当前目录发现的清单、已应用状态 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
barn up
创建缺失节点、启动已停止节点,并在保留健康 VM 进程的同时重试未完成的客机配置。默认等待管理 SSH 就绪,随后更新宿主 SSH 别名、客机 hosts 与控制节点 SSH 条目;非致命客机配置问题放入 warnings,已就绪节点仍视为成功。
首次交互运行时可以准备缺失的宿主依赖;清单与部署状态都不存在时会生成 meta。脚本应先运行 setup --yes。已有节点的定义变化需用 resize 或 recreate,清单遗漏的节点需显式 destroy。--rollback 仅清理本轮准备失败节点中尚未提交且可安全回收的制品。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
-f, --file string |
显式清单路径;生命周期命令依次使用该文件、当前目录发现的清单、已应用状态 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
--mirror |
使用中国官方源 https://repo.pigsty.cc/barn;显式 --repo 优先 |
1.1.0 |
-n, --no-wait |
QEMU 启动并通过进程身份核验后返回;SSH 就绪与客机恢复延后到下一次 up |
1.1.0 |
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
--rollback |
清理本次准备失败节点中尚未提交、可以安全回收的制品 | 1.1.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
barn start
按已应用状态启动所选已停止节点并等待 SSH,使用同一 BARN_HOME 时可从任意目录执行,不读取清单或创建新节点。启动会刷新 SSH 访问配置;已经运行的 VM 需要补做客机配置时用 up。共享目录不可用只影响对应节点,独立节点继续执行。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-n, --no-wait |
QEMU 启动并通过进程身份核验后返回;SSH 就绪与客机恢复延后到下一次 up |
1.1.0 |
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
barn stop
核验已记录的进程身份后停止所选 Linux VM,保留根盘、数据盘、密钥与部署状态。未指定名称时停止整套 Linux 部署;原生 macOS VM 和宿主网络分别由各自命令管理。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
barn restart
使用已应用状态停止并重新启动已有节点,不读取清单修改。需要重新读取清单用 reload,应用已有节点的定义变化用 resize 或 recreate。默认等待 SSH,--no-wait 可跳过等待。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-n, --no-wait |
QEMU 启动并通过进程身份核验后返回;SSH 就绪与客机恢复延后到下一次 up |
1.1.0 |
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
barn reload
先校验期望规格与启动依赖,通过后才停止所选节点并按 up 流程收敛,可以创建清单中新增加的节点。需要调整资源或重建的变更,以及清单遗漏的已应用节点,都会在停止任何 VM 前阻止执行。仅按已记录配置重启时用 restart。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
-f, --file string |
显式清单路径;生命周期命令依次使用该文件、当前目录发现的清单、已应用状态 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
--mirror |
使用中国官方源 https://repo.pigsty.cc/barn;显式 --repo 优先 |
1.1.0 |
-n, --no-wait |
QEMU 启动并通过进程身份核验后返回;SSH 就绪与客机恢复延后到下一次 up |
1.1.0 |
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
--rollback |
清理本次准备失败节点中尚未提交、可以安全回收的制品 | 1.1.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
barn resize
调整 CPU 与内存,保留 VM 身份、磁盘与 SSH 密钥。支持的增加操作使用热插拔,减少资源或不支持在线修改时使用停机再启动。稳定版 1.1.0 从清单读取 CPU/内存变更;镜像、架构、数据盘、网络、共享目录、节点创建和移除均不能通过 resize 应用。
1.2.0 还接受资源参数,并可用 -D 128GiB 原地扩容根盘:停止 QEMU、扩展镜像、启动客机扩展并核验最后一个普通 ext4/XFS 根分区,原先停止的 VM 最后恢复为停止状态。目标只能增加,且须对齐 512 字节。中断后用同一目标重试;不支持缩小、LVM、加密根盘或非末尾分区。详见根盘扩容与恢复。命令行覆盖不改写清单。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
-f, --file string |
显式清单路径;生命周期命令依次使用该文件、当前目录发现的清单、已应用状态 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
barn recreate
按期望清单替换所选 VM,会删除这些节点的根盘与非持久数据盘,并重新挂接兼容的持久盘。先用 plan 检查范围;终端要求输入 recreate,脚本必须传 --yes 或 --force,没有 -y 简写。
不选节点时应用整个清单;清单遗漏已有节点会在停止 VM 前报错,需先显式销毁该节点或将它加回清单。选择性重建保留其他节点,成功后也会刷新 SSH 访问配置。
别名:rc。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-C, --cpu string |
缩放前的基础 vCPU 数,整数 1–256;最终 CPU 数也不能超过 256 | 1.2.0 |
-D, --disk string |
根盘绝对容量,裸整数单位为 GiB,例如 128GiB;至少达到基础镜像虚拟容量 |
1.2.0 |
-f, --file string |
显式清单路径;生命周期命令依次使用该文件、当前目录发现的清单、已应用状态 | 1.1.0 |
--force |
跳过交互确认;无终端执行销毁或重建时必须显式确认 | 1.1.0 |
-I, --image string |
镜像引用,如 u24、el9:stable 或 d13@20261103;覆盖所选节点的 vm_image/vm_version |
1.1.0 |
-M, --mem string |
缩放前的基础内存,裸整数单位为 MiB,例如 4GiB;至少 512 MiB |
1.2.0 |
--mirror |
使用中国官方源 https://repo.pigsty.cc/barn;显式 --repo 优先 |
1.1.0 |
-n, --no-wait |
QEMU 启动并通过进程身份核验后返回;SSH 就绪与客机恢复延后到下一次 up |
1.1.0 |
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
-S, --scale string |
CPU 与内存的整数倍率,1–256;磁盘容量不缩放 | 1.2.0 |
--yes |
确认并执行显示的计划;系统 sudo 仍可能要求密码 |
1.1.0 |
barn status
检查已记录的节点配置与当前 QEMU 进程身份,无需位于清单目录。running 表示已核验 VM 进程存在,不能据此判断 SSH 就绪。--verbose 增加运行时细节,--json 返回节点记录、正在进行的操作说明和失败信息。退化节点可能使命令退出 5,健康节点仍会列出。1.2.0 文本输出使用 2c4g 这样的紧凑 SPEC 值。
别名:st。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn destroy
删除所选 VM,未指定节点时删除整套部署。根盘与非持久数据盘会被删除,持久盘默认保留;终端要求输入 destroy,脚本必须传 --yes 或 --force,没有 -y。
--delete-persistent 和 --purge 仅支持整套部署,后者还删除部署密钥与状态。镜像缓存、宿主网络和原生 Mac VM 保留。删除控制节点后,第一个剩余节点接任控制角色;随后更新 admin_ip 并运行 up 配置其控制 SSH 访问。
别名:de。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--delete-persistent |
同时删除归 Barn 所有的持久数据盘,仅支持整套部署 | 1.1.0 |
--force |
跳过交互确认;无终端执行销毁或重建时必须显式确认 | 1.1.0 |
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
--purge |
同时删除持久盘、部署密钥与状态,仅支持整套部署 | 1.1.0 |
--yes |
确认并执行显示的计划;系统 sudo 仍可能要求密码 |
1.1.0 |
barn purge
立即删除整套 Linux 部署,包括根盘、持久数据盘、密钥、状态和默认 SSH 配置片段,不接受节点名或读取清单。没有 --yes、-y、--force 选项;需要先审阅范围时用 --ask,输入 y/yes 确认,回车取消。
镜像缓存、宿主网络和 Mac VM 保留。部署不存在时幂等成功,遗留制品身份不明时仍需核验。1.2.0 的 --parallel 控制清理过程中的节点并发。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--ask |
先显示节点与删除范围,要求输入 y/yes;n/no 或回车取消 |
1.1.0 |
-p, --parallel int |
节点并发上限;省略时为 max(1, 逻辑 CPU 数 - 2),0 表示所选节点全部并发 |
1.2.0 |
实现依据
command_lifecycle.go · main.go
发布源码与相对 1.1.0 的变化见版本基线。
3 - 客机访问与 hosts
连接 Linux 客机、执行脚本、读取日志,以及发布 SSH 和 hosts 条目。
本参考对应 Barn 1.2.0;选项表区分 1.1.0 已有选项 与 1.2.0 新增选项,具体范围见版本基线。所有命令继承全局选项。
barn ssh
打开所选已准备节点的交互 SSH 会话,默认选择已准备的控制节点,否则选第一个已准备节点。远程命令必须放在 -- 后,参数会像普通 ssh 一样合并后交给远程 shell 解析;Barn 选项放在分隔符前。节点参数必须是解析后的节点名,不能使用 IP、别名或组名。
远程命令的退出码原样传回。结构化交互 SSH 将会话输出发送到 stderr,最终报告写入 stdout。详见 SSH 参数规则。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn exec
在所选已准备节点运行一个远程命令,默认节点选择规则与 ssh 一致。必须使用 --,首个命令参数不能为空;分开的参数保留空格、引号以及后续空值。管道、重定向和变量展开请用 sh -c,也兼容将单个完整字符串作为 shell 命令。
文本模式转发子进程输出与退出码;结构化结果包含 success、exit_code、stdout、stderr。远程非零退出码原样返回,应先检查报告再判断是否属于 Barn 自身错误。
别名:ex。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn logs
读取所选节点的串口或 QEMU 诊断日志,默认选已准备的控制节点或第一个已准备节点。--source events 读取部署级有界事件日志,不接受节点参数,可在部署状态建立前使用。跟随模式持续输出流,-f 在这里表示跟随日志,不是清单文件。QEMU 参数仅在详细输出开启时显示。
别名:l。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-f, --follow |
持续读取新增日志;文本输出字节流,JSON 输出 NDJSON,YAML 输出文档流 | 1.1.0 |
-s, --source string |
日志源:serial(默认)、qemu 或部署级 events |
1.1.0 |
barn provision
通过已验证的部署 SSH 连接,将本地 Bash 脚本流式发送给所选运行中节点;未选节点时针对全部节点。脚本不会作为文件留在客机,执行记录包含脚本摘要;命令不创建或启动 VM。
必须指定 --script,默认串行执行,整个操作默认超时一小时。此处 --parallel 0 无效,与 1.2.0 生命周期并发规则不同。--sudo 在客机使用非交互的 sudo -n,需确保客机用户已有权限。结构化输出可以检查各节点的执行结果与失败。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-p, --parallel int |
正整数并发上限,默认 1;不接受 0 | 1.1.0 |
-s, --script string |
必填:将此本地 Bash 脚本通过 SSH 传给所选客机执行 | 1.1.0 |
--sudo |
在客机通过 sudo -n 执行脚本 |
1.1.0 |
-t, --timeout duration |
整个操作的截止时间,正时长;默认 1h |
1.1.0 |
barn ssh-config
默认打印 Linux 部署的 OpenSSH 配置片段。--install 写入片段并在 ~/.ssh/config 加一条 Include,打印和安装都可选节点;--remove 只移除指定的 Barn 片段,不依赖部署状态,也不接受节点名。安装与移除选项互斥。
默认前缀为 barn,片段路径为 ~/.ssh/barn_config,普通生命周期命令会自动维护。用户 SSH 配置无法安全修改时,Barn 给出需要手工加入的 Include,直接使用 barn ssh 仍可连接。
别名:sc。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-i, --install |
安装 SSH 配置片段,并在 ~/.ssh/config 加入一条 Include |
1.1.0 |
--name string |
SSH 别名与配置片段前缀,默认 barn |
1.1.0 |
--remove |
移除 Barn 安装的 SSH 配置片段与 Include |
1.1.0 |
barn hosts install
通过摘要匹配的提权 helper,将已应用节点的名称和别名写入宿主 /etc/hosts 的 Barn 区块。终端先展示变更并询问;非交互或结构化模式默认只预览,显式 --yes 才执行。区块内容未变化时无需提权,up 不会自动发布此文件。
Barn 1.2.0 新增 -f pigsty.yml,可在创建 VM 前发布清单节点及 all.vars.vm_hosts。每次替换整个 Barn 区块,后来不带 -f 执行会移除仅来自清单的服务名,详见本机服务名。
别名:i。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-f, --file string |
发布清单节点、别名与 vm_hosts;无需预先创建 VM |
1.2.0 |
-y, --yes |
确认并执行显示的计划;系统 sudo 仍可能要求密码 |
1.1.0 |
barn hosts uninstall
只移除宿主 /etc/hosts 中 Barn 管理的区块,保留其他条目,不需要清单或部署状态。终端模式展示计划并询问;非交互或结构化模式默认预览,--yes 才执行。移除此区块不删除 VM 或修改客机 DNS 配置。
别名:u。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-y, --yes |
确认并执行显示的计划;系统 sudo 仍可能要求密码 |
1.1.0 |
实现依据
command_root.go · command_access.go · main.go
发布源码与相对 1.1.0 的变化见版本基线。
4 - 镜像命令
更新签名目录、查看和下载镜像、导入本地文件以及清理缓存。
本参考对应 Barn 1.2.0;选项表区分 1.1.0 已有选项 与 1.2.0 新增选项,具体范围见版本基线。所有命令继承全局选项。
官方仓库和 HTTP 源必须提供受信任的分离签名。显式选择的自定义 HTTPS 仓库或本地目录可以不签名,但来源必须恰好是该仓库的 catalog.json;只要提供了签名,就必须验签成功。详见目录信任规则。
barn update
从所选仓库取得 catalog.json,并按仓库策略获取所需签名,通过信任与 revision 检查后原子激活。普通命令只使用本地元数据,不隐式刷新。本命令更新镜像元数据,不升级 Barn 可执行文件。仓库选择顺序为 --repo > --mirror > BARN_REPO > 全球官方源,详见仓库选择与信任。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--mirror |
使用中国官方源 https://repo.pigsty.cc/barn;显式 --repo 优先 |
1.1.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
barn image list
列出目录中的所有架构和已注册本地镜像,不接受镜像位置参数或架构过滤选项。读取本地活动目录,需要刷新时显式运行 barn update。barn images、barn im 都是镜像命令组的别名。
别名:ls。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
barn image info
查看单个镜像的元数据与已验证缓存状态,省略镜像参数时使用目录默认值。可传家族名 u24、通道 u24:stable 或数字版本前缀 el9@9,架构默认原生。--architecture/-a 是 --arch/-A 的兼容写法,不下载镜像制品。别名与精确内置版本见 Linux 镜像。
别名:in。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
barn image pull
下载所选制品,核验 SHA-256、字节大小、qcow2 结构和虚拟容量后激活缓存。省略镜像和架构时使用目录默认镜像与宿主原生架构,已有有效缓存可以复用。目录中的 upstream URL 记录来源,不作为下载失败时的备用地址。仍支持兼容写法 --architecture/-a;下载异架构镜像不会安装对应 QEMU 模拟器。
别名:p。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
客机架构:native、amd64、arm64;也接受 x86_64、x64、aarch64、a64 |
1.1.0 |
--mirror |
使用中国官方源 https://repo.pigsty.cc/barn;显式 --repo 优先 |
1.1.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
barn image import
将本地普通 qcow2 文件复制到私有缓存并校验容器,可选核对预期摘要。接受相对路径、~/ 与指向普通文件的符号链接,需要 qemu-img;导入不启动镜像、不安装 cloud-init,也不修改登录凭据。
指定 local-* 名称可注册不可变的清单引用,必须同时给出启动模式与源镜像登录用户。具名导入可用 -A 记录异架构,qcow2 元数据本身无法识别 CPU 架构;无名称导入不能使用 -A。使用时设置 vm_image 及匹配的 vm_arch。详见导入与缓存规则。
别名:i。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-A, --arch string |
与 --name 一起记录客机架构,默认 native;不会转换镜像架构 |
1.1.0 |
-b, --boot string |
具名导入必填:bios 或 uefi |
1.1.0 |
--name string |
不可变的 local-* 别名,必须同时指定 --boot 与 --source-user |
1.1.0 |
-s, --sha256 string |
可选的预期 SHA-256;不匹配时导入失败 | 1.1.0 |
-u, --source-user string |
具名导入必填:源镜像的登录用户 | 1.1.0 |
barn image sync
从精确 URL 或本地文件激活目录,按上面的信任规则读取旁边的 .minisig 签名,适用于恢复或导入;正常刷新已配置仓库应使用 update。--repo 指定替换哪个仓库的活动元数据。无签名自定义源必须恰好是 <repo>/catalog.json,任意位置的恢复文件则需要受信任签名。
旧 revision 需要 --allow-downgrade;对于允许无签名目录的自定义仓库,从曾签名的目录切换到无签名目录也需要此选项。它不会接受无效签名,也不绕过官方仓库的签名要求和 revision 内容检查。后续回退保护仍记住历史最高 revision。
别名:sy。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--allow-downgrade |
允许激活比历史最高 revision 更旧的签名目录 | 1.1.0 |
-r, --repo string |
要替换活动目录的仓库 | 1.1.0 |
barn image reset
为所选仓库重新激活当前二进制内置的镜像目录,保留回退保护使用的历史最高 revision。镜像缓存与 VM 磁盘保留;需要清理缓存时使用 image prune。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-r, --repo string |
要恢复为内置目录的仓库 | 1.1.0 |
barn image prune
默认列出可回收缓存文件,--yes 才删除候选文件,与 --dry-run 互斥。所选仓库的活动目录、已应用节点的基础镜像摘要和本地别名注册表会保护所引用的文件;可识别的过期暂存文件也可清理,隔离的 .corrupt-* 文件保留。
预览和删除时应使用相同的仓库选择。删除按顺序执行,后续文件发生错误不会恢复已经删除的文件。详见清理规则。
别名:pr。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-d, --dry-run |
仅预览计划,不修改状态 | 1.1.0 |
-r, --repo string |
镜像仓库 URL 或本地目录,优先于 BARN_REPO;支持 --mirror 的命令中也优先于该选项 |
1.1.0 |
-y, --yes |
删除列出的无引用文件;不能与 --dry-run 同时使用 |
1.1.0 |
实现依据
发布源码与相对 1.1.0 的变化见版本基线。
5 - 仓库命令
根据 repo.yaml 与 qcow2 制品扫描、构建和校验静态镜像仓库。
本参考对应 Barn 1.2.0;选项表区分 1.1.0 已有选项 与 1.2.0 新增选项,具体范围见版本基线。所有命令继承全局选项。
barn repo scan
扫描包含 repo.yaml 与平铺 images/ 目录的仓库根路径,报告已跟踪、缺失、未跟踪和不安全的 qcow2 文件,不修改文件,也不需要 qemu-img。扫描成功即退出 0,即使发现问题也是如此;自动化必须检查 missing 和 unsafe,不能只看退出码。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn repo build
校验 repo.yaml,通过 qemu-img 检查声明的 qcow2 制品,计算最终摘要与大小,并原子生成 catalog.json。缺失或不安全的制品导致构建失败,未跟踪文件不会收录;repo.yaml 与镜像字节保持原样。
本命令不签名或发布目录。内容变化时递增 revision,保持制品文件名不可变,并在发布前使用独立的贡献者签名工具。详见仓库格式。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn repo verify
根据 repo.yaml 与实际镜像字节在内存中重建预期目录,要求与已有 catalog.json 逐字节一致,需要 qemu-img。本命令检查仓库内容一致性,分离签名由目录激活流程或签名工具验证。
除 --help 外没有局部选项,仍可使用全局输出选项。
实现依据
发布源码与相对 1.1.0 的变化见版本基线。
6 - 宿主网络命令
检查、安装和移除 Linux 客机使用的固定 IP 网络。
本参考对应 Barn 1.2.0;选项表区分 1.1.0 已有选项 与 1.2.0 新增选项,具体范围见版本基线。所有命令继承全局选项。
barn network status
检查宿主上供 Linux 客机使用的唯一 Barn 网络,包括后端、已安装 CIDR、归属、健康状态和生命周期预检发现。--cidr 指定预期子网,省略时检查已安装子网;本操作只读。每个原生 Mac VM 的独立网络另行管理。
别名:st。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-c, --cidr string |
可选的预期私有 /24;省略时检查已安装子网 |
1.1.0 |
barn network install
检查或安装宿主网络后端:macOS 使用 socket_vmnet,Linux 通过活动网络管理器配置 barn0。终端先展示提权计划并询问;结构化或非交互调用默认仅预览,--yes 才执行。新 Mac 建议先用 setup 获取锁定的 socket_vmnet 压缩包。
--archive、--interface-id 仅适用于 macOS,host/shared 是 macOS vmnet 模式,Linux 不接受 shared。已有网络必须匹配所选配置,变更子网或模式前先检查状态。
别名:i。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-a, --archive string |
macOS 专用:锁定版本的本地 socket_vmnet 压缩包,仍需通过摘要校验 |
1.1.0 |
-c, --cidr string |
规范的 RFC1918 IPv4 /24 子网;模板与网络安装默认 10.10.10.0/24 |
1.1.0 |
-i, --interface-id string |
macOS 专用:持久化的 vmnet UUID | 1.1.0 |
-m, --mode string |
macOS 的 socket_vmnet 模式:host(默认)或 shared |
1.1.0 |
-y, --yes |
确认并执行显示的计划;系统 sudo 仍可能要求密码 |
1.1.0 |
barn network uninstall
仅移除 Barn 管理的网络配置并恢复已记录的宿主设置,运行中 Linux 客机会阻止卸载,应先停止。终端模式显示计划后询问,结构化或非交互调用默认预览,--yes 才执行。不会删除 VM 磁盘或原生 Mac 网络。
别名:u。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-y, --yes |
确认并执行显示的计划;系统 sudo 仍可能要求密码 |
1.1.0 |
实现依据
发布源码与相对 1.1.0 的变化见版本基线。
7 - macOS 命令
管理具名原生 macOS VM、桌面访问、恢复镜像与共享基础镜像。
下列选项均存在于 1.1.0 和 1.2.0。
原生 macOS VM 需要 Apple Silicon、macOS 27+ 与匹配的 Barn.app(宿主上的原生应用包),应由已登录桌面的普通用户运行。状态位于 $BARN_HOME/mac,独立于 Linux 清单。
省略可选名称时,Barn 选择唯一已有 VM 或 mac1;存在多台机器且没有 mac1 时需显式指定。configure、recreate、destroy 始终要求名称,start、stop 可以传多个名称或 --all。宿主各应用合计最多同时运行两台 macOS VM,正在安装的基础镜像也计入限制。详见机器规则、网络、输出与文件。
Mac 容量单位采用二进制,即使写作 GB 也是如此,与 Linux 清单中的十进制 GB 不同;Mac 裸容量数字表示字节。这些命令忽略 Linux 的 BARN_IMAGE/BARN_ARCH/BARN_CPU/BARN_MEM/BARN_SCALE/BARN_DISK 覆盖。
barn mac ls
列出每台 VM 的状态、地址、SSH 就绪情况、macOS 版本和资源,读取本地记录并查询运行中机器,不创建、下载或启动 VM。别名为 list、status、st;直接运行 barn mac 也执行此操作。
别名:list, status, st。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn mac up
创建并启动具名 VM,默认名称为 mac1,等待 SSH 和免密 sudo 可用。没有已准备基础镜像时,先确认从 Apple 下载并安装 macOS,后续机器复用基础镜像。
创建参数只用于新 VM,已有 VM 的参数不匹配会报配置冲突;修改 CPU、内存或共享目录用 configure。--no-wait 返回时首次初始化可能尚未完成,随后运行不带该选项的 mac up NAME 完成密钥和 sudo 配置。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--clipboard on|off |
on/off,也接受 true/false、yes/no;新 VM 默认开启,仅在桌面窗口聚焦时共享 |
1.1.0 |
--cpu int |
vCPU 数,默认 4;最小 2,最大为宿主逻辑 CPU 数;configure 省略时保留原值 |
1.1.0 |
--disk size |
基础镜像磁盘容量,最小 32 GiB;首次默认 100 GiB,up 优先沿用已准备基础镜像的容量 |
1.1.0 |
--ipsw string |
使用本地 Apple IPSW 恢复文件 | 1.1.0 |
--memory size |
内存,默认 8 GiB;必须为整 MiB,范围为 4 GiB 至宿主内存;configure 省略时保留原值 |
1.1.0 |
-n, --no-wait |
VM 进程运行后返回;首次启动可能仍在初始化,随后运行 mac up NAME 完成就绪检查 |
1.1.0 |
--open |
VM 启动后打开桌面窗口 | 1.1.0 |
--share [name=]path[:ro] |
可重复:[name=]path[:ro|:rw];默认可写,在客机 /Volumes/My Shared Files 中显示 |
1.1.0 |
--subnet string |
独立的私有 /24 子网;auto 自动选择空闲子网,新 VM 默认自动选择 |
1.1.0 |
--user string |
客机管理员用户名;默认宿主 macOS 用户名,名称无效时用 barn |
1.1.0 |
-y, --yes |
下载 Apple 恢复镜像前跳过询问;无终端下载时需要 | 1.1.0 |
barn mac start
启动已有 VM 并等待 SSH,不创建机器或下载镜像。可传多个名称或 --all,两者不能混用。普通启动要求机器已完成首次初始化;尚未初始化的 VM 用 up 完成,--recovery 则直接打开 macOS Recovery 桌面。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--all |
选择全部已有 VM;不能同时指定名称 | 1.1.0 |
-n, --no-wait |
VM 进程运行后返回;首次启动可能仍在初始化,随后运行 mac up NAME 完成就绪检查 |
1.1.0 |
--open |
VM 启动后打开桌面窗口 | 1.1.0 |
--recovery |
启动 macOS Recovery 并打开桌面,不等待普通 SSH 就绪 | 1.1.0 |
barn mac stop
通过 macOS 正常关闭所选机器,等待两分钟后仍未停止则断电,并在结果中报告。可传多个名称或 --all;--force 立即断电,会丢失客机中未保存的工作。磁盘和机器配置保留。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--all |
选择全部已有 VM;不能同时指定名称 | 1.1.0 |
--force |
立即断电,客机中未保存的工作会丢失 | 1.1.0 |
barn mac restart
正常关闭一台 VM 后重新启动并应用配置,省略名称时遵循默认机器选择规则。不接受多个名称或 --all;可用 --open 打开桌面,--no-wait 跳过 SSH 等待。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-n, --no-wait |
VM 进程运行后返回;首次启动可能仍在初始化,随后运行 mac up NAME 完成就绪检查 |
1.1.0 |
--open |
VM 启动后打开桌面窗口 | 1.1.0 |
barn mac configure
必须显式指定一台已有 VM,修改 CPU、内存、共享目录或子网时需先停止机器;剪贴板设置可以在运行时修改。磁盘和登录账户保持原样,配置在下次启动生效;当前会话的剪贴板同步可在菜单栏即时切换。省略的选项保留原设置,重复 --share 可添加或替换同名共享,--unshare 按名称移除共享。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--clipboard on|off |
on/off,也接受 true/false、yes/no;新 VM 默认开启,仅在桌面窗口聚焦时共享 |
1.1.0 |
--cpu int |
vCPU 数,默认 4;最小 2,最大为宿主逻辑 CPU 数;configure 省略时保留原值 |
1.1.0 |
--memory size |
内存,默认 8 GiB;必须为整 MiB,范围为 4 GiB 至宿主内存;configure 省略时保留原值 |
1.1.0 |
--share [name=]path[:ro] |
可重复:[name=]path[:ro|:rw];默认可写,在客机 /Volumes/My Shared Files 中显示 |
1.1.0 |
--subnet string |
独立的私有 /24 子网;auto 自动选择空闲子网,新 VM 默认自动选择 |
1.1.0 |
--unshare stringArray |
可重复:删除指定名称的共享目录配置 | 1.1.0 |
barn mac recreate
必须显式指定机器名。擦除该 VM 磁盘,使用原名称、账户、资源、共享目录和地址重新克隆 macOS,客机文件、应用和设置全部丢失。终端要求输入 recreate,脚本需 --yes 或 --force,没有 -y。--update 使用最新已准备基础镜像,应先执行 mac image update。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--force |
跳过销毁或重建的确认;无终端时必须显式确认 | 1.1.0 |
-n, --no-wait |
VM 进程运行后返回;首次启动可能仍在初始化,随后运行 mac up NAME 完成就绪检查 |
1.1.0 |
--update |
重建时使用最新已准备的基础镜像,先运行 mac image update |
1.1.0 |
--yes |
等同于 --force;没有 -y 简写 |
1.1.0 |
barn mac destroy
必须显式指定一个或多个机器名,将机器断电并删除磁盘、密钥、密码和设置,保留共享基础镜像和其他机器。终端要求输入 destroy,脚本需 --yes 或 --force,没有 -y。宿主共享目录不会删除;未使用基础镜像用 mac image prune 清理。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--force |
跳过销毁或重建的确认;无终端时必须显式确认 | 1.1.0 |
--yes |
等同于 --force;没有 -y 简写 |
1.1.0 |
barn mac open
显示 VM 的桌面窗口,机器已停止时会先启动。关闭窗口后 VM 继续在后台运行,剪贴板在窗口聚焦时共享。尚未完成首次初始化且已运行的 VM 可直接打开桌面;未运行时用 mac up NAME --open 继续首次启动。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn mac ssh
使用该 VM 专属 SSH 私钥与固定的宿主密钥连接,省略远程命令时打开交互 shell。-- 前最多传一个已有机器名及 Barn 选项;远程命令必须放在 -- 后,按普通 SSH 方式拼接后交给远程 shell。远程退出码原样返回。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn mac exec
使用 VM 专属 SSH 连接运行远程程序,必须提供 -- 和非空首参数;分开的参数保留边界及后续空值,shell 表达式请显式使用 sh -c。也兼容单个命令字符串。Barn 选项置于 -- 前,远程退出码原样返回,结构化结果包含 stdout、stderr 和 exit_code。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn mac password
读取客机登录账户的密码,用于桌面解锁及管理员询问。默认输出密码,--copy 改为复制到宿主剪贴板。密码文件与机器 SSH 私钥采用相同保护;注意选择输出位置。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-c, --copy |
复制登录密码到宿主剪贴板,替代终端明文输出 | 1.1.0 |
barn mac ssh-config
打印全部 Mac VM 的 OpenSSH 配置片段,支持 ssh、scp、rsync 和编辑器按名称连接,每台机器使用独立私钥与固定宿主密钥。首台 VM 就绪时自动安装,生命周期命令持续更新。--remove 移除配置并保持停用,直到显式 --install;两选项互斥,也不接受机器选择器。已有 SSH 别名冲突时仅发布 IP 地址条目。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-i, --install |
安装 ~/.ssh/barn-mac_config 及其 Include,并重新启用自动维护 |
1.1.0 |
--remove |
移除 Barn 安装的 Mac SSH 配置,并保持停用直到显式 --install |
1.1.0 |
barn mac logs
读取 VM 的 runner.log 尾部,包含启动、网络、关闭和 Apple Virtualization 错误。--lines/-n 为正整数,默认 100;这里的 -n 表示行数,不是跳过等待。没有跟随选项。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
-n, --lines int |
读取最近的日志行数,正整数,默认 100 | 1.1.0 |
barn mac setup
提前准备共享 macOS 基础镜像:确认后从 Apple 下载 IPSW,或读取 --ipsw 指定的本地恢复文件,再安装为未启动的基础镜像。后续 VM 从它克隆。此命令不创建具名机器;直接 mac up 也会在需要时自动执行此准备。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--disk size |
基础镜像磁盘容量,最小 32 GiB;首次默认 100 GiB,up 优先沿用已准备基础镜像的容量 |
1.1.0 |
--ipsw string |
使用本地 Apple IPSW 恢复文件 | 1.1.0 |
-y, --yes |
下载 Apple 恢复镜像前跳过询问;无终端下载时需要 | 1.1.0 |
barn mac image ls
列出缓存的 IPSW 恢复文件和已准备基础镜像,包括状态、占用空间及使用它们的 VM;别名为 list。这是本地状态查询,无需调用原生运行器。
别名:list。
除 --help 外没有局部选项,仍可使用全局输出选项。
barn mac image update
从 Apple 查询最新 macOS 27 恢复镜像,经确认后下载并安装为新机器的默认基础镜像;也可通过 --ipsw 指定本地文件。已有 VM 继续使用原基础镜像,显式 mac recreate NAME --update 才替换该 VM 磁盘。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--ipsw string |
使用本地 Apple IPSW 恢复文件 | 1.1.0 |
-y, --yes |
下载 Apple 恢复镜像前跳过询问;无终端下载时需要 | 1.1.0 |
barn mac image prune
默认列出没有机器使用、且不是当前默认基础镜像的清理候选,只有传 --yes 才删除。--installers 同时纳入下载的 IPSW 与未完成下载。VM 的引用关系会保护仍在使用的基础镜像。
| 选项 | 含义 / 默认值 | 可用版本 |
|---|---|---|
--installers |
将下载的 IPSW 与未完成下载也纳入清理范围 | 1.1.0 |
-y, --yes |
删除列出的未使用镜像;省略时仅预览 | 1.1.0 |
barn mac doctor
只读检查宿主 macOS 与 Apple Silicon 支持、Mac 组件签名、可用磁盘空间、基础镜像以及每台 VM 的文件、密钥、共享目录、网络和 SSH,不修改或启动机器。Linux/QEMU 环境用顶层 barn doctor 检查。
除 --help 外没有局部选项,仍可使用全局输出选项。
实现依据
发布源码与相对 1.1.0 的变化见版本基线。