跳到主要内容

ArceOS 快速上手

ArceOS 的最短路径是直接运行 cargo xtask arceos qemu。该 QEMU 子命令会选择对应架构的 board 模板,默认启动 Hello World。

1. QEMU 快速启动

不带 --package 时,QEMU 子命令从 os/arceos/configs/board/qemu-<arch>.toml 读取默认应用与 feature;当前模板使用最小的 arceos-helloworld。需要运行其他应用时,再通过 --package 显式覆盖。

1.1 RISC-V 64

qemu-riscv64 使用 riscv64gc-unknown-none-elf target 和 QEMU virt 平台。

cargo xtask arceos qemu --target riscv64gc-unknown-none-elf

1.2 AArch64

qemu-aarch64 使用 aarch64-unknown-none-softfloat target 和 QEMU virt 平台。

cargo xtask arceos qemu --target aarch64-unknown-none-softfloat

1.3 x86_64

qemu-x86_64 使用 x86_64-unknown-none target 和 PC 类 QEMU 平台配置。

cargo xtask arceos qemu --target x86_64-unknown-none

1.4 LoongArch64

qemu-loongarch64 使用 loongarch64-unknown-none-softfloat target,运行环境需要提供 qemu-system-loongarch64

cargo xtask arceos qemu --target loongarch64-unknown-none-softfloat

完成 defconfig 后,后续命令通常不需要重复传入 --package--target--arch。切换架构时重新执行以上三步即可。

2. 常用包

--package 用于覆盖板卡配置中的默认应用。仓库提供网络、文件系统和最小运行环境等不同类型的示例包。

--package 用于选择要启动的应用。当前仓库中常见快速上手包包括:

包名功能
arceos-helloworld最小 Hello World
arceos-httpserverHTTP 服务器
arceos-httpclientHTTP 客户端
arceos-shell交互式 Shell

下面的命令分别覆盖网络服务、文件系统交互和仅构建场景。显式传入 --package--target 会覆盖 defconfig 中的默认值,并在不重写默认配置的情况下切换应用。

# HTTP 服务器
cargo xtask arceos qemu --package arceos-httpserver --target riscv64gc-unknown-none-elf

# 文件系统 Shell
cargo xtask arceos qemu --package arceos-shell --target aarch64-unknown-none-softfloat

# 仅构建
cargo xtask arceos build --package arceos-helloworld --target riscv64gc-unknown-none-elf

3. 测试入口

ArceOS 测试入口使用 --test-group rust--test-group c 选择测试组,并通过 --test-case 进一步筛选单个用例。显式指定测试组可以避免当前板卡 defconfig 影响 QEMU 测试目录发现。

# Rust 测试组
cargo xtask arceos test qemu --target riscv64gc-unknown-none-elf --test-group rust

# C 测试组
cargo xtask arceos test qemu --target riscv64gc-unknown-none-elf --test-group c

# 指定单个 Rust 测试用例
cargo xtask arceos test qemu --target aarch64-unknown-none-softfloat --test-group rust --test-case task-affinity

详细说明见:ArceOS 测试套件设计