命令索引
所有命令由 scripts/axbuild 实现,通过 cargo xtask 统一入口调用。本文是完整的命令参考:列出每个 cargo xtask 顶层命令及其全部子命令、参数和用法示例,并提供到详细原理文档的链接。
1. 调用方式
默认调用方式为 cargo xtask <cmd>,经 tg-xtask 包转发到 axbuild::run():
cargo xtask <cmd> → cargo run -p tg-xtask -- <cmd> → axbuild::run()
.cargo/config.toml 中预配置了以下别名,使命令更简洁:
| 完整命令 | 别名 |
|---|---|
cargo xtask arceos ... | cargo arceos ... |
cargo xtask starry ... | cargo starry ... |
cargo xtask axvisor ... | cargo axvisor ... |
cargo xtask board ... | cargo board ... |
两种写法等价:
cargo xtask arceos qemu --package arceos-httpserver
cargo arceos qemu --package arceos-httpserver # 同上
2. 顶层命令
cargo xtask 的顶层命令(与 tg-xtask --help 输出一致),按职能分组:
| 命令 | 说明 | 详细文档 |
|---|---|---|
| 代码质量检查 | ||
cargo xtask test | workspace std 白名单测试 | Std 白名单测试 |
cargo xtask ktest | 在 QEMU 或板卡运行 harness=false 内核 axtest | 内核测试 |
cargo xtask clippy | workspace clippy(feature × target 矩阵) | Clippy 检查 |
cargo xtask sync-lint | 可疑 Relaxed 原子序检查 | Sync Lint |
| 辅助工具 | ||
cargo xtask board | 远程板卡管理(ls/connect/config) | 板卡管理 |
cargo xtask backtrace | host 端 backtrace 符号化 | Backtrace 符号化 |
cargo xtask image | TGOS rootfs/guest 镜像管理 | 镜像管理 |
cargo xtask ovmf | 获取经校验的 OVMF CODE/VARS 路径 | 本节 |
cargo xtask axloader | UEFI bootloader 构建与 HTTP smoke 测试 | Axloader |
cargo xtask agent-review-bench | 历史拉取请求快照的离线评审基准 | 评审基准 |
| OS 子系统 | ||
cargo xtask arceos | ArceOS 构建/运行/测试 | ArceOS |
cargo xtask starry | StarryOS 构建/运行/测试/app/perf/kmod | StarryOS |
cargo xtask axvisor | Axvisor 构建/运行/测试(含 test uboot) | Axvisor |
通用的参数解析、Snapshot、Build Info、feature 校验和 QEMU to_bin 契约见 参数与配置;三套系统共享的 QEMU/板卡测试编排(用例发现、build wrapper、pipeline 类型、rootfs 缓存、grouped runner)见 测试基础设施;CI 自动化见 自动 CI 测试。
3. 质量检查
3.1 标准测试
对 scripts/test/std_crates.csv 白名单中的每个 crate 执行 cargo test -p <package>。无参数。
cargo xtask test
详见 Std 白名单测试。
3.2 内核测试
构建并运行确实依赖 QEMU/板卡的 harness = false Cargo 集成 axtest target;宿主可运行的测试应使用普通 #[test] 和 cargo xtask test。无参数时从 Cargo metadata 选择所有直接声明 workspace axtest dev-dependency 的 package;--workspace、可重复 -p/--package、--exclude、--test 与构建参数采用 Cargo 风格。--arch 会过滤到支持该架构的执行单元,每个 test bin 独立构建并启动一次 QEMU。
cargo xtask ktest qemu --workspace --arch x86_64
cargo xtask ktest qemu -p starry-kernel --test axtest_kernel --arch x86_64
cargo xtask ktest board -p arceos-axtest-sg2002-usb-msc --test axtest -b aka-00-sg2002
详见 内核测试。
3.3 Clippy 检查
对 workspace 包按 feature × target 矩阵执行 clippy。三种模式互斥:--all 或无参数 = 全量;--package = 显式;--since = 增量。
| 参数 | 说明 |
|---|---|
--all | 审计全部 workspace 包 |
--package <PACKAGE>(可重复) | 仅检查指定的 workspace 包 |
--since <REF> | 仅检查自 git ref 以来变更及受影响的包 |
cargo xtask clippy # 全量(CI 默认)
cargo xtask clippy --package axcpu
cargo xtask clippy --since origin/main
详见 Clippy 检查。
3.4 并发检查
用 syn 识别可疑的 Relaxed 原子序同步模式。
| 参数 | 说明 |
|---|---|
--since <REF> | 仅检查自 git ref 以来变更的 Rust 文件(省略则全量) |
cargo xtask sync-lint # 全量(CI 默认)
cargo xtask sync-lint --since origin/main # 增量
详见 Sync Lint。
4. 工程工具
4.1 板卡管理
远程板卡管理,通过 ostool-server 交互。
| 子命令 | 用法 | 说明 |
|---|---|---|
ls | board ls [--server <H>] [--port <P>] | 列出可用板卡类型 |
connect | board connect -b <TYPE> [--server <H>] [--port <P>] [--session-file <REL=LOCAL>...] | 分配板卡并连接串口,可上传一次性会话文件 |
config | board config | 编辑板卡服务器配置 |
详见 板卡管理。
4.2 回溯符号化
从日志中提取并符号化 BACKTRACE_BEGIN/BT/BACKTRACE_END 块。
cargo xtask backtrace symbolize --elf <PATH> [--log <PATH>] [--kind <KIND>] [--adjust-ip <BOOL>] [--ip-bias <I64>]
| 参数 | 默认 | 说明 |
|---|---|---|
--elf <PATH> | 必填 | 用于符号化的 ELF(必须保留 debug info) |
--log <PATH> | stdin | 输入日志路径,省略则读 stdin |
--kind <KIND> | 自动 | 仅符号化匹配的块 kind |
--adjust-ip <BOOL> | true | 符号化前 ip -= 1(call-site 调整) |
--ip-bias <I64> | 0 | 符号化前对 ip 施加有符号偏移(地址 slide) |
cargo xtask backtrace symbolize --elf target/x86_64/debug/arceos-httpserver --log qemu.log
详见 Backtrace 符号化。