Skip to content

feat(arceos): unify QEMU config layout with StarryOS and Axvisor#1613

Merged
ZR233 merged 1 commit into
devfrom
axbuild
Jul 15, 2026
Merged

feat(arceos): unify QEMU config layout with StarryOS and Axvisor#1613
ZR233 merged 1 commit into
devfrom
axbuild

Conversation

@ZCShou

@ZCShou ZCShou commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@ZR233
ZR233 merged commit acf0e79 into dev Jul 15, 2026
154 of 174 checks passed
@ZR233
ZR233 deleted the axbuild branch July 15, 2026 03:16

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查摘要

本 PR(#1613)已合并,此为合并后审查。

PR 内容

PR 为 ArceOS 统一了 QEMU 配置布局,使其与 StarryOS 和 Axvisor 保持一致:

  1. 新增配置模板:在 os/arceos/configs/board/os/arceos/configs/qemu/ 下为全部四个架构(x86_64、aarch64、riscv64、loongarch64)添加了 qemu-{arch}.toml 配置模板。
  2. 代码重构:将 FAT32 rootfs 磁盘镜像准备逻辑从 mod.rs 移入 rootfs.rsprepare_default_qemu_fat32_rootfs),职责更清晰。
  3. 自动配置选择:添加 ensure_default_build_config_for_target,当 arceos build/arceos qemu 未指定显式配置时,自动从 board/qemu-{arch}.toml 选择匹配的默认配置。
  4. QEMU 配置发现load_qemu_config 在未传 --qemu-config 时,回退到 os/arceos/configs/qemu/qemu-{arch}.toml 而非返回 None
  5. std 构建功能扩展std_build.rsax-std 功能自动注入从仅 std-compat 扩展为同时注入 irqpagingstd-compat,确保动态平台发现后的最小引导。
  6. Axvisor 快照重置write_defconfig 现在会清除快照中的 qemu_configuboot_config
  7. CLI 契约测试:新增 arceos_starry_and_axvisor_share_the_base_cli_contract 验证三 OS 共享的基础 CLI 接口一致性。
  8. 文档更新:更新了 ArceOS 构建和运行文档以反映新的配置布局。

代码质量评估

  • ✅ 重构干净:FAT32 逻辑独立成 rootfs.rs,配置选择逻辑独立成 config.rsboard.rs
  • ✅ 测试覆盖良好:每个新函数都有对应的单元测试
  • ✅ 设计与统一目标一致:布局与 StarryOS os/StarryOS/configs/ 和 Axvisor os/axvisor/configs/ 保持一致
  • cargo fmt --check 通过
  • cargo clippy -- -D warnings 通过

发现的问题

编译错误(测试代码)scripts/axbuild/src/arceos/mod.rs 顶部移除了 use ostool::run::qemu::QemuConfig;,但 #[cfg(test)] mod tests 中的 standard_x86_64_and_loongarch64_qemu_configs_use_uefi_bootstandard_config_templates_cover_every_supported_qemu_target 两个测试仍直接使用 QemuConfig 类型。测试模块通过 use super::*; 导入外层命名空间,但由于外层不再导入 QemuConfigcargo test 编译失败:

error[E0425]: cannot find type `QemuConfig` in this scope
   --> scripts/axbuild/src/arceos/mod.rs:647:25
    |
647 |             let config: QemuConfig =
    |                         ^^^^^^^^^^ not found in this scope

修复方向:在 mod.rs#[cfg(test)] mod tests 块内添加 use ostool::run::qemu::QemuConfig;

此问题未被 CI 捕获,因为 CI 中 Run clippy / run_container job 被 skip,而 cargo xtask arceos test qemu 路径不执行 axbuild 的单元测试。

CI 状态

  • Detect changed paths:success
  • Test arceos x86_64 qemu / run_host:success
  • Test axvisor loongarch64 qemu / run_container:success
  • Test axvisor riscv64 qemu / run_host:success
  • 其余非相关 job(starry、board 等)均被路径过滤 skip,符合预期。

重复/重叠分析

  • 搜索 repo:rcore-os/tgoskits type:pr arceos config layout unify 未发现重复 PR
  • PR #1607 修复 axvisor 快速入门脚本,与本 PR 不重叠

总结

PR 整体质量良好,架构设计合理,测试覆盖充足。唯一的阻塞问题是测试代码中 QemuConfig 导入缺失导致 cargo test 编译失败。建议在后续 PR 中修复。

Powered by deepseek-v4-pro


#[cfg(test)]
mod tests {
use clap::Parser;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#[cfg(test)] mod tests 通过 use super::*; 导入外层命名空间,但外层已移除 use ostool::run::qemu::QemuConfig;。请在测试模块内添加 use ostool::run::qemu::QemuConfig;,否则 cargo test 会因找不到 QemuConfig 类型而编译失败。

This was referenced Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants