目录

hvisor 上的 Asterinas 支持

本项目面向 CCF 开源创新大赛赛题“在 hvisor 虚拟化平台上支持 Asterinas(星绽)操作系统”,已在 hvisor RISC-V 64 qemu-plic 平台上实现 Asterinas 非根 Zone 的完整启动。

团队成员:队长李佳斌;队员李佳禾、姚舒文。

已实现

  • 复现锁定版本的 hvisor 官方 RISC-V 双 Zone Linux 基线。
  • 为 hvisor 增加 SBI Debug Console 转发,并启用 Guest 硬件 A/D 位更新。
  • 为 hvisor-tool 增加通用 ELF64 PT_LOAD 装载模式,保留原始镜像兼容路径。
  • 将 Asterinas ELF、DTB 和 initramfs 映射到独立的静态 Guest 资源区。
  • Asterinas 完成内存、页表、Timer、PLIC、VirtIO Console、initramfs 和用户态系统调用初始化。
  • 单核和双核 Zone 均已通过;双核日志确认第二个 Asterinas CPU idle 线程启动。
  • 用户态自动验证 CPU 枚举、文件 I/O、VirtIO block 写入/读回、进程创建/等待、 Timer sleep 和控制台设备。
  • 提供可重复执行的构建、部署、启动、断言、日志和 JSON 证据链。
  • 对 ELF 魔数、头部、段边界、溢出、对齐、入口和回调错误进行启动前校验。
  • 修复 hvisor-tool VirtIO MMIO 无效队列选择语义及相关越界访问风险。

最新验证证据位于:

  • artifacts/manifests/hvisor-baseline.json
  • artifacts/manifests/asterinas-smoke.json
  • artifacts/manifests/asterinas-smoke-dual.json

两份 manifest 的 status 均应为 pass。Asterinas 测试必须同时出现:

Loaded ELF kernel:
Enter riscv_boot
Successfully booted.

一键复现

Windows 只负责调用 WSL。编译器、QEMU、上游源码、镜像、容器、缓存和原始 日志全部保存在 Ubuntu 26.04 的 ext4 虚拟磁盘中,不写入 Windows 工程目录。

.\ccf.ps1 bootstrap
.\ccf.ps1 doctor
.\ccf.ps1 fetch
.\ccf.ps1 build-baseline
.\ccf.ps1 test-baseline
.\ccf.ps1 test-asterinas

双核功能测试:

$env:ASTERINAS_VARIANT = "dual"
.\ccf.ps1 test-asterinas

重复冷启动稳定性测试:

$env:ASTERINAS_SMOKE_RUNS = "30"
$env:ASTERINAS_VARIANT = "single"
.\ccf.ps1 test-asterinas

每次运行均保存独立日志、SHA-256 和端到端耗时,并在 asterinas-smoke.json 中汇总成功率、最小值、平均值、P95 和最大值。

技术结构

OpenSBI M-mode
  └─ hvisor HS-mode
      ├─ Root Zone Linux: CPU 0-1、hvisor-tool、VirtIO 后端
      └─ Asterinas Zone:  静态 CPU、独立 RAM、PLIC、Timer、VirtIO Console

通用 ELF 装载器按 ELF Guest 物理地址计算各 PT_LOAD 段相对偏移,再映射到 hvisor 分配的宿主物理内存。Asterinas 部署 ELF 使用 --strip-all,保留加载 段和入口的同时,将制品从约 134 MiB 缩减到约 11 MiB。

可复现与开源合规

  • upstream-lock.json 固定 hvisor、hvisor-tool、Asterinas 和测试 Linux 的完整 Git SHA。
  • 上游源码保持洁净;适配以可审阅补丁保存于 patches/
  • 每个里程碑使用独立、可追溯的 Git 提交。
  • 构建产物和大型依赖位于 WSL;仓库只保留源码、配置、测试和小型证据清单。

环境边界与清理规则见 docs/setup/wsl.md,技术设计说明见 docs/design/architecture.md, 机器验证结果与评分映射见 docs/evaluation/preliminary-results.md, 评审证据索引见 docs/evaluation/evidence-index.md, 最终评分映射见 docs/evaluation/final-scoring-map.md, 提交包说明见 outputs/final-submission-package.md, 提交前清单见 SUBMISSION_CHECKLIST.md

关于

CCF开源创新大赛初赛作品:在hvisor虚拟化平台上支持Asterinas(星绽)操作系统。

60.7 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号