目录

Xhyper

License Architecture Language

README.md | README_zh.md

alt text

Xhyper 是一款基于 Bao Project 的 Type 1 裸机虚拟机监控器,面向 ARMv8-A 与 RISC-V 嵌入式平台。它强调强隔离、直接硬件控制和可落地的多虚拟机部署,支持 Linux 与 FreeRTOS 工作负载并发运行。

核心特点

  • Type 1 裸机架构,开销低,隔离强。
  • 双层设计:Hardvisor 负责硬件原语,Softvisor 负责虚拟机编排。
  • 支持 ARMv8-A(AArch64)与 RISC-V(RV64)平台。
  • 支持设备直通和基于 IOMMU 的 DMA 隔离。
  • 内存管理采用 buddy 与 slab 分配器。
  • 提供基于 Unity + CMock 的本地与板级测试支持。

支持平台

架构 开发板 启动指南 支持的虚拟机配置
ARMv8-A Xilinx ZCU104 docs/board/zcu104.md linux+freertos, linux+linux
ARMv8-A Raspberry Pi 4B (8GB) docs/board/rpi4b-8gb.md linux+freertos
ARMv8-A QEMU aarch64 virt docs/board/qemu-aarch64-virt.md linux+freertos
RISC-V SiFive P550 docs/board/p550.md linux, freertos, linux+freertos
RISC-V QEMU riscv64 virt docs/board/qemu-riscv64-virt.md linux+freertos

快速开始

体验 Xhyper 的最快方式是使用 QEMU RISC-V64 Virt 平台。项目已经在 bin/quick-start/ 中提供了预编译固件。

注意:以下步骤假设您在 Linux 环境下操作。

1. 安装 QEMU

如果您的环境中已经安装了 qemu-system-riscv64 7.2.0 或更新版本,可以跳过这一步。

mkdir -p ~/.local/opt/qemu-10.0.2
cd ~/.local/opt/qemu-10.0.2
git clone https://github.com/qemu/qemu.git --depth 1 --branch v10.0.2
./configure --enable-slirp --prefix=$HOME/.local
make -j$(nproc)
make install

请确认 ~/.local/bin 已加入 PATH

2. 在 QEMU 中启动 Xhyper

在项目根目录执行下面的命令,使用预置的 OpenSBI 镜像启动:

qemu-system-riscv64 -nographic -machine virt,aclint=on -cpu rv64 -m 4G -smp 4 -bios bin/quick-start/opensbi.bin -device virtio-net-device,netdev=net0 -netdev user,id=net0,net=192.168.42.0/24,hostfwd=tcp:127.0.0.1:5555-:22 -device virtio-serial-device -chardev pty,id=serial3 -device virtconsole,chardev=serial3

启动后,OpenSBI 会自动加载 Xhyper,并在控制台输出 Guest 日志。

3. 通过 Shell 命令管理虚拟机

Xhyper 提供了内置的 shell 用于虚拟机生命周期管理。Xhyper 启动后,您可以使用以下命令:

创建虚拟机

vmcreate Linux      # 创建 Linux 虚拟机
vmcreate FreeRTOS   # 创建 FreeRTOS 虚拟机

启动虚拟机

vmstart Linux       # 启动 Linux 虚拟机并切换到其控制台
vmstart FreeRTOS    # 启动 FreeRTOS 虚拟机并切换到其控制台

在虚拟机控制台之间切换

运行多个虚拟机时,使用 Leader Key 快捷键在控制台之间切换:

  • Ctrl+X,然后按 x:在本地 Hypervisor shell 和上一个虚拟机控制台之间切换
  • Ctrl+X,然后按 ←:切换到上一个虚拟机
  • Ctrl+X,然后按 →:切换到下一个虚拟机

示例工作流程

  1. 启动 QEMU 并通过串口控制台连接
  2. 创建 Linux 虚拟机:vmcreate Linux
  3. 启动 Linux 虚拟机:vmstart Linux(自动切换到 Linux 控制台)
  4. Ctrl+X,然后按 x 返回 Hypervisor shell
  5. 创建 FreeRTOS 虚拟机:vmcreate FreeRTOS
  6. 启动 FreeRTOS 虚拟机:vmstart FreeRTOS
  7. 使用 Ctrl+X + 方向键在 Linux 和 FreeRTOS 控制台之间切换

更完整的构建、板级启动和运行说明,请参考 docs/build.md 以及 docs/board/ 下的各平台文档。

架构概览

  • src/hardvisor/:面向硬件的基础能力,包括启动、CPU、中断、IOMMU、内存、缓存和 UART。
  • src/softvisor/:负责虚拟机编排、vCPU 生命周期、IPC、日志、虚拟内存和内存分配。
  • src/board/:ARMv8-A 与 RISC-V 平台的 BSP 实现。
  • src/lib/:字符串、位图、链表、映射等通用基础库。
  • test/:基于 Unity + CMock 的本地与板级测试。

Xhyper 采用分层设计,将硬件控制与虚拟机管理解耦。完整架构说明请查看 docs/architecture.md

文档导航

许可证

Xhyper 基于木兰宽松许可证第 2 版(Mulan PSL v2)发布。完整文本请查看 LICENSE,或访问 http://license.coscl.org.cn/MulanPSL2

致谢

Xhyper 构建在 Bao Project 的基础之上。感谢 Bao 社区在开源嵌入式虚拟化领域的持续贡献。

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

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