Conch 环境准备

适用于 Linux 5.10+(x86_64/aarch64)。主机需要可用的 /dev/kvm,并且至少有一条可用的 IPv4 默认路由;安装系统依赖时需要 root 权限。

必需工具

工具 要求 安装位置或来源
Go 1.26.2+ 官方下载,命令加入 PATH
Git、GNU Make 发行版版本 系统包管理器
Cloud Hypervisor v52.0-conch Conch release,安装为 /usr/local/bin/cloud-hypervisor
erofs-utils 1.9+,mkfs.erofs 支持 --fsalignblks 系统包管理器或源码安装,命令加入 PATH
CNI plugins bridgehost-local 官方 release,安装到 /usr/libexec/cni
iptables、util-linux 提供 iptablesnsenter 系统包管理器
kmod 内核模块化构建时提供 modprobe 系统包管理器

可选工具:

用途 工具 要求或位置
Python SDK Python 3.10+、pip、venv 系统包管理器;虚拟环境使用仓库内 .venv
volume_mounts virtiofsd 1.13.3+ 官方 release,默认 /usr/libexec/virtiofsd
修改 protobuf 接口 protoc 系统包管理器;其余插件由 make gen-proto-* 安装
构建 initramfs cpio、gzip 系统包管理器

安装

发行版软件仓库

openEuler、Fedora、CentOS、RHEL:

sudo dnf install -y git make curl tar \
  iptables util-linux kmod erofs-utils containernetworking-plugins

Debian、Ubuntu:

sudo apt-get update
sudo apt-get install -y git make curl tar \
  iptables util-linux kmod erofs-utils containernetworking-plugins

Go

按照 Go 官方安装说明 安装 Go 1.26.2+,并将 go 加入 PATH

Cloud Hypervisor

ConchSandbox release 下载 Cloud Hypervisor v52.0-conch,安装为 /usr/local/bin/cloud-hypervisor

主机架构 Asset
x86_64 cloud-hypervisor-static
aarch64 cloud-hypervisor-static-aarch64

CNI plugins

Conch 默认从主机共享目录 /usr/libexec/cni 加载 bridgehost-local。发行版安装的插件如果位于其他目录,将实际路径写入 network.cni.plugin_bin_dirs;也可以从 CNI plugins release 下载对应架构的包并解压到该目录。Conch 直接通过 netlink 启用 network namespace 中的 loopback 接口,不需要安装 loopback CNI 插件。

erofs-utils

如果发行版提供的 mkfs.erofs 不支持 --fsalignblks,按照 EROFS 官方说明 从源码安装 1.9+,并将命令加入 PATH

主机配置

安装仓库提供的 CNI 配置并加载所需内核模块:

sudo install -d -m 0755 /etc/conch/cni/net.d
sudo install -m 0644 config/cni/net.d/10-conch.conf /etc/conch/cni/net.d/10-conch.conf
sudo modprobe erofs
sudo modprobe vhost_vsock

Conch 将 libcni result cache 保存在 <server.state_dir>/cni/results;host-local IPAM 状态保存在 <server.state_dir>/cni/networks。这两个目录由 server.state_dir 派生,不单独暴露为用户配置接口。

使用前确认 CNI 配置的子网不与主机、集群或 guest tap 子网重叠。

启动 conchd 前,请确保主机存在可用的 IPv4 默认路由,例如 default via 192.168.1.1 dev eth0。Conch 启动网络池时会查找 0.0.0.0/0 默认路由并配置 CNI bridge 的转发规则;如果找不到默认路由,网络池初始化会失败,conchd 也不会启动成功。

如果二进制安装在其他位置,在本地配置中填写其绝对路径:

sandbox:
  cloud_hypervisor:
    binary: /actual/path/to/cloud-hypervisor
volume:
  virtiofs:
    binary: /actual/path/to/virtiofsd

验证

go version
cloud-hypervisor --version
mkfs.erofs --help 2>&1 | grep -- --fsalignblks
test -x /usr/libexec/cni/bridge
test -x /usr/libexec/cni/host-local
test -r /dev/kvm -a -w /dev/kvm
grep -w erofs /proc/filesystems
test -e /dev/vhost-vsock

验证通过后,按照快速开始构建并启动 Conch。