PRTOS Hypervisor v1.0.0 是首个全平台正式发布版本,在 五种处理器架构 上提供硬件辅助虚拟化支持:x86 (i386)、AArch64 (ARMv8)、RISC-V 64、AMD64 (x86_64) 和 LoongArch64。本版本提供了一个生产就绪的嵌入式 Type-1 虚拟机管理程序,具有确定性实时调度、严格的空间与时间隔离,以及完善的 VirtIO I/O 虚拟化支持。
| 平台 | 虚拟化模式 | 硬件扩展 | 客户操作系统支持 |
|---|---|---|---|
| x86 (i386) | 半虚拟化 | 影子页表 | BAIL、FreeRTOS |
| AArch64 (ARMv8) | 硬件辅助虚拟化 + 半虚拟化 | EL2/vGIC/Stage-2 | Linux 6.19、FreeRTOS、BAIL |
| AMD64 (x86_64) | 硬件辅助虚拟化 + 半虚拟化 | Intel VT-x/VMX/EPT | Linux 6.19、FreeRTOS、BAIL |
| RISC-V 64 (RV64) | 硬件辅助虚拟化 + 半虚拟化 | H-扩展/SBI HSM | Linux 6.19、FreeRTOS、BAIL |
| LoongArch64 | 硬件辅助虚拟化 + 半虚拟化 | LVZ (GCFG/GTLBC/GID) | Linux 6.19、FreeRTOS、BAIL |
- AArch64: ARM VHE(虚拟化宿主扩展),EL2 层运行,vGIC v3 中断虚拟化,Stage-2 页表(VTTBR_EL2)实现内存隔离
- AMD64: Intel VT-x/VMX 与 EPT(扩展页表),直接 APIC 虚拟化用于中断传递
- RISC-V 64: H-扩展与
hgatpG-stage 地址转换(Sv39x4),SBI HSM 用于多核管理 - LoongArch64: LVZ(龙芯虚拟化扩展),GCFG 控制 CSR/TLB/定时器陷入,基于 GID 的 TLB 隔离,GSPR 异常驱动的虚拟机退出处理
四个 64 位平台均可引导未修改的 Linux 6.19.9 SMP 内核,支持 4 个 vCPU:
- 通过串口控制台登录(用户名
root,密码1234) - 完整的 SMP 调度,所有 vCPU 在
/proc/cpuinfo中可见 - 嵌入式 Buildroot initramfs 根文件系统,BusyBox 用户空间
Linux(3 个 vCPU,硬件虚拟化)+ FreeRTOS(1 个 vCPU,半虚拟化)同时运行,通过共享内存实现分区间通信:
mix_os_demo_aarch64mix_os_demo_riscv64mix_os_demo_amd64mix_os_demo_loongarch64
双分区 Linux 演示,通过共享内存实现基于 VirtIO 的分区间网络通信:
virtio_linux_demo_2p_aarch64virtio_linux_demo_2p_riscv64virtio_linux_demo_2p_amd64virtio_linux_demo_2p_loongarch64
统一测试脚本(scripts/run_test.sh)支持全部 5 种架构:
- 37 个示例测试用例
- 基于 QEMU 的自动化引导验证
- 确定性通过/失败报告
总计: 27 通过: 11 失败: 0 跳过: 16
总计: 27 通过: 17 失败: 0 跳过: 10
总计: 27 通过: 16 失败: 0 跳过: 11
总计: 27 通过: 16 失败: 0 跳过: 11
总计: 32 通过: 16 失败: 0 跳过: 16
所有平台特定测试均通过。SKIP 结果表示属于其他架构的测试。
- 虚拟化:半虚拟化,影子页表
- 调度:循环调度,可配置时间片
- 示例:11 个通过测试(example.001-009、helloworld、helloworld_smp)
- 引导:ISO 镜像,通过 QEMU
-cdrom选项加载
- 虚拟化:ARM VHE,EL2 层 Stage-2 地址转换
- 中断控制器:vGIC v3,支持 LPI/SGI
- 引导:U-Boot (
u-boot.bin) +mkimageuImage 格式 - SMP:4 个 vCPU,通过 PSCI 电源管理
- QEMU:
-machine virt,gic_version=3 -machine virtualization=true -cpu cortex-a72
- 虚拟化:H-扩展,G-stage 地址转换(Sv39x4)
- SMP:SBI HSM(Hart 状态管理)多核引导
- 引导:OpenSBI 固件(
-bios default)+ 扁平二进制内核 - QEMU:
-machine virt -cpu rv64 -smp 4 -m 1G
- 虚拟化:Intel VT-x/VMX,EPT 扩展页表
- 内存:恒等映射前 1GB;所有分区内存地址需低于 0x40000000
- 引导:ISO 镜像,通过 QEMU
-cdrom选项加载 - KVM 支持:可选
-enable-kvm使用原生硬件加速 - QEMU:
-machine virt -smp 4 -m 1024
- 虚拟化:LVZ 硬件辅助虚拟化(GCFG、GTLBC、GID)
- 定时器:TB 边界宿主定时器轮询(单线程 TCG 模式);通过
csrwr TCFG周期性重装 - SMP:跨 CPU 定时器唤醒,多 CPU 分区调度
- 引导:RSW(驻留软件)引导桩,无需 U-Boot
- QEMU:
-accel tcg,thread=single -nodefaults -nic none -machine virt -cpu max -smp 4 -m 2G - Linux 客户机:4 个 vCPU,Buildroot 根文件系统,DTB 中嵌入
rng-seed加速 CRNG 初始化
git clone https://github.com/prtos-project/prtos-hypervisor.git
cd prtos-hypervisor
# 选择平台:x86、aarch64、riscv64、amd64 或 loongarch64
cp prtos_config.<平台> prtos_config
make defconfig
make
# 运行测试
bash scripts/run_test.sh --arch <平台> check-all
- 交叉编译器:
loongarch64-linux-gnu-gcc(推荐 GCC 14.x) - QEMU:需要支持 LVZ TCG 的自定义构建版本(参见
loongarch64_getting_started.md) - Linux 客户机:预构建的 vmlinux,内嵌 Buildroot initramfs
- 构建脚本:
buildroot_linux_configure_build.sh自动化 Buildroot + Linux 内核构建
- LoongArch64 TCG 性能:在 TCG 模拟下客户 Linux 引导约需 5 分钟(其他平台使用原生 QEMU 支持约 30 秒)。这是单线程 TCG 模式下软件模拟 LVZ 的固有特性。
- LoongArch64 QEMU:需要带有 LVZ TCG 补丁的自定义 QEMU 构建版本(非上游 QEMU)。
- x86 (i386):仅支持半虚拟化(32 位平台不支持硬件辅助 VT-x)。
| 文档 | 说明 |
|---|---|
README.md / README_zh.md |
项目概述和各平台快速入门 |
doc/design/prtos_tech_report.md |
技术架构报告 |
doc/getting_started/<arch>_getting_started.md |
各平台入门指南 |
doc/getting_started/<arch>_api_reference.md |
各平台 API 参考 |
AGENTS.md |
AI 代理开发自动化指导 |
PRTOS Hypervisor 由 PRTOS 社区开发。参见代码贡献指南了解如何参与。
GPL v2。
继续阅读











评论