跳转到主要内容

从 Windows 使用 Barn

为什么仍需 Linux 宿主、WSL2 需要验证什么,以及原生 Windows 后端涉及哪些工作。

Barn 当前的宿主配置与发布二进制覆盖 macOS、Linux 上的 amd64 和 arm64,没有原生 Windows 发行版。Windows 用户可以通过 Linux 宿主操作 Barn;WSL2 和嵌套 Linux VM 是把这层宿主放到 Windows 本机上的候选方式。

本评估复核于 2026-11-08。下述 WSL2 与 Hyper-V 路径仍需完成 Barn 全生命周期实测,才能成为受支持的安装指南。当前平台契约见平台与限制和 internal/platform。

选择 Barn 实际运行的位置

宿主环境 可复用的部分 需要确认的条件
远程 Linux/KVM 宿主 现有 Linux Barn 二进制与宿主集成 SSH 访问、足够资源及常规 Linux 宿主检查
WSL2 发行版 Linux 二进制、QEMU、OpenSSH 与 Linux 文件系统 嵌套 KVM、systemd、bridge helper、私网和 Windows 到客机的访问
Hyper-V 中的完整 Linux VM 常规 Linux 安装与网络管理器 嵌套虚拟化、/dev/kvm、两层 VM 的资源和 Windows 访问路径
原生 Windows/QEMU QEMU 的 WHPX 加速器 新的 Barn 宿主后端、网络集成、安装器与验收矩阵

本地实验可以先评估 WSL2,因为它能复用 Linux 实现。嵌套虚拟化不可用或需要可靠性能时,可直接使用远程 Linux/KVM 宿主。Docker Desktop 会在 Barn 所需的宿主功能外再加一层 VM/容器边界,不纳入这条安装方案。

WSL2 的两种配置作用域

WSL2 全局虚拟机选项位于 Windows 的 %UserProfile%\.wslconfig;各发行版的启动配置,包括 systemd,位于 Linux 内的 /etc/wsl.conf。微软的配置参考说明了这一区别与 nestedVirtualization 选项。写入配置后,仍需在实际机器上确认 KVM 设备可用并能启动客机。

BARN_HOME、缓存镜像和客机磁盘应放在 WSL Linux 文件系统中,例如默认的 ~/.barn。微软的文件系统建议也要求 Linux 工作负载优先使用 Linux 文件系统。外层 WSL 虚拟磁盘承载 Linux 文件系统,内部的 qcow2 则是 Barn 单独管理的客机磁盘。

PowerShell 可以通过 wsl.exe 调用 Linux CLI,但状态、SSH 配置、宿主共享目录和私网桥仍属于这个 Linux 环境。

先验收,再形成安装建议

WSL2 或 Hyper-V Linux 候选环境应依次通过以下检查:

  1. 确认 Linux init/网络管理器正常,当前用户能访问 /dev/kvm;用 KVM 启动一个小型 QEMU 探针,仅检查设备路径还不够。
  2. 执行 barn setup --dry-run 查看依赖与网络变更,再按 Barn 的 Linux 检查核对已安装的 qemu-bridge-helper、发行版包归属、权限和 barn0 网桥。
  3. 在可丢弃实验环境中启动同架构客机并达到 SSH 就绪,验证出站流量、宿主访问和两台客机在私网中的互通。
  4. 测试 Windows 实际使用的访问路径,将管理端点、所需服务和私网路由分别检查。
  5. 启停客机、重启外层 Linux 环境,验证恢复、持久盘和 Barn 所属网络资源的清理。

Windows 到 WSL 的 localhost 转发或镜像网络模式,本身不能证明嵌套客机子网已有可达路由。测试记录应说明选用的路由或隧道及防火墙要求。完整 Hyper-V Linux VM 的嵌套虚拟化同样依赖外层宿主配置。

Barn 只为跨架构客机和特定镜像兼容情况选择 TCG;普通原生 KVM 启动失败时,不会静默切换到 TCG。因此,没有可用原生加速的 WSL 环境不能按普通 Linux Barn 宿主宣传。

原生 Windows 后端需要独立实现

QEMU 可以通过 WHPX使用硬件加速,Barn 仍需实现加速器周围的宿主契约:

领域 当前依赖 Windows 所需工作
平台与打包 Darwin/Linux 配置与发布目标 Windows 配置、依赖检测、二进制与安装器
进程身份与恢复 POSIX 进程证据和信号 Windows 进程句柄、身份核验、取消与恢复
状态与锁 Unix 文件系统元数据与 flock 等价的锁、权限和原子状态更新
QMP 与宿主共享 Unix socket、继承的目录描述符、Virtio-9p 可用的传输方式与经过验证的共享语义
私网 barn0、bridge helper 与 Linux 网络管理器 明确管理特权和防火墙归属的 Windows 后端

这些实现边界可从 internal/process、internal/lock、internal/hostshare和 internal/network核对。为现有二进制包一层调用脚本无法提供这些契约。

Vagrant 展示了为什么必须明确 provider 的差异:其 Hyper-V 限制说明 Vagrantfile 网络配置会被忽略,由用户选择现有虚拟交换机。Barn 的固定地址实验环境需要先建立自己的网络保证,再把 Windows 加入受支持的宿主矩阵。

表格阅读