hvisor 是一个用 Rust 实现的 Type-1 裸机虚拟机监控器,采用分离内核(Separation Kernel)设计,提供高效的硬件资源虚拟化和隔离能力。该虚拟机监控器实现了严格的虚拟机环境分离,通过不同的区域(zone)确保虚拟化环境的性能和安全性。
- 分离内核设计:虚拟机被划分为三个区域:zone0(管理区)、zoneU(用户区)、zoneR(实时区),之间有严格的隔离。
- 简洁轻量:该虚拟机监控器采用 Rust 实现,具有简洁的设计。
- CPU 虚拟化:静态分区的物理 CPU(pCPUs),不进行动态调度。
- 内存虚拟化:通过配置文件对虚拟机内存空间进行预分配。
- I/O 虚拟化:支持设备直通和 virtio 半虚拟化。
- 多平台支持:支持多种架构,包括
aarch64、riscv64、loongarch64和x86_64。 - 虚拟机管理:虚拟机通过 zone0(root-linux)中的 Linux 环境进行管理,管理任务通过命令行工具 hvisor-tool 完成,提供创建、启动、停止和删除虚拟机的基本管理功能。
- 形式化验证:部分 hvisor 代码正在使用 verus 工具进行形式化验证。
| 类别 | 设备 | 支持架构 | 备注 |
|---|---|---|---|
| Virtio 设备 | virtio-blk | aarch64, riscv64, loongarch64, x86_64 |
|
| virtio-net | aarch64, x86_64 |
||
| virtio-console | aarch64, riscv64, loongarch64, x86_64 |
||
| virtio-gpu | aarch64 |
仅支持 QEMU | |
| 串行设备/UARTs | PL011 | aarch64 |
|
| imx-uart | aarch64 |
NXP i.MX8MP | |
| NS16550A | loongarch64 |
||
| xuartps | aarch64 |
Xilinx Ultrascale+ MPSoC ZCU102 | |
| uart16550 | aarch64 |
Rockchip RK3568/RK3588, Forlinx OK6254-C | |
| uart16550a | x86_64 |
||
| 中断控制器 | GIC irq controller | aarch64 |
|
| 7A2000 irq controller | loongarch64 |
||
| PLIC | riscv64 |
||
| AIA | riscv64 |
仅支持 MSI 模式 | |
| APIC | x86_64 |
||
| 设备直通(Zone0) | All | All | |
| 设备直通(ZoneU) | PCIe | aarch64, riscv64, loongarch64,x86_64 |
|
| GPU / HDMI | aarch64, loongarch64 |
NXP i.MX8MP, 3A6000 | |
| eMMC | aarch64, riscv64 |
NXP i.MX8MP | |
| USB | aarch64,x86_64 |
NXP i.MX8MP | |
| SATA | riscv64, loongarch64,x86_64 |
megrez, 3A6000 | |
| Ethernet | aarch64, riscv64, loongarch64,x86_64 |
NXP i.MX8MP, megrez, 3A6000 |
- QEMU virt aarch64
- NXP i.MX8MP
- Xilinx Ultrascale+ MPSoC ZCU102
- Rockchip RK3588
- Rockchip RK3568
- Forlinx OK6254-C
- Phytium Pi
- QEMU virt riscv64
- Milk-V Megrez
- Sifive Hifive Premier P550
- dp-1000
- FPGA 香山(昆明湖)on S2C Prodigy S7-19PS-2
- Loongson 3A5000(7A2000 桥片)
- Loongson 3A6000(7A2000 桥片)
- QEMU Q35
- ASUS NUC14MNK
- ECX-2300F-PEG
- Linux 6.13
- Zephyr AArch64
- Zephyr AArch32
- RT-Thread
- Android
- OpenHarmony
请参阅 hvisor 文档,获取所有支持平台的快速上手指南、构建和运行说明:hvisor 文档
- 更新日志
- 支持 USB zoneU 直通
- 支持 PCIe 总线虚拟化
- 支持 OpenHarmony
- 支持 ARMv9
- 支持 GICv4
- 支持缓存着色
- 支持 SR-IOV
- 支持 NPU zoneU 直通
- 支持 Nvidia GPU zoneU 直通
- Web Management tool
- 设备树配置工具
- 支持 Nvidia Orin
- 支持 Nvidia Thor
- 支持 Raspberry Pi 5
- 支持 IOMMU 虚拟化
- 支持 时钟控制器 虚拟化
- 支持 pinctrl 虚拟化
- 支持无 zone0 启动 zoneU / zoneR