镜像管理
axbuild 负责从 rcore-os/tgosimages 获取 rootfs 和其他运行镜像。镜像管理分为两个独立目录:
download_dir保存从 registry 指向的压缩归档,由 axbuild 校验和覆盖。extract_dir保存解压后的工作镜像,允许构建脚本、调试工具和 QEMU 修改。
配置
axbuild 第一次读取镜像配置时会生成 <workspace>/tmp/axbuild/.image.toml:
registry = "https://raw.githubusercontent.com/rcore-os/tgosimages/refs/heads/main/registry/default.toml"
download_dir = "/tmp/tgosimages"
extract_dir = "<workspace>/tmp/axbuild/rootfs"
下载目录取系统临时目录;Linux 上默认为 /tmp/tgosimages。解压目录仍位于当前 workspace,避免不同源码工作区共享可修改的 rootfs。
配置文件是由 axbuild 管理的本机配置,已被 .gitignore 忽略。读取时只关心 registry、download_dir 和 extract_dir,其他字段不解释也不迁移。三个当前字段必须完整且类型正确;字段缺失、类型无效或文件不是有效 TOML 时,axbuild 使用全部默认值重新生成。读取后配置会被回写为只包含三个当前字段的规范格式,因此旧字段和任意额外字段都会被删除。需要固定镜像版本时,应提供完整的当前格式配置。
也可以使用环境变量或命令行覆盖目录:
| 配置 | 环境变量 | 命令行 |
|---|---|---|
| 下载目录 | TGOS_IMAGE_DOWNLOAD_DIR | -D/--download-dir |
| 解压目录 | TGOS_IMAGE_EXTRACT_DIR | -E/--extract-dir |
| registry | — | -R/--registry |
优先级为:命令行、环境变量、.image.toml。
例如,把下载缓存放到持久目录,同时把可修改 rootfs 留在当前工作区:
TGOS_IMAGE_DOWNLOAD_DIR=/data/tgosimages \
cargo xtask starry qemu --arch riscv64
Linux 上的默认目录结构如下:
/tmp/tgosimages/
├── images.toml
└── rootfs-riscv64-alpine.img.tar.xz
<workspace>/tmp/axbuild/rootfs/
└── rootfs-riscv64-alpine.img
images.toml 是本次获取并展开 includes 后的 registry 副本,仅用于查看和诊断,不参与 registry 新旧判断。