#hypervisor #platform #hyper-v #windows #whp

libwhp

Rust Windows Hypervisor Platform API

2 个版本

使用旧的Rust 2015

0.1.3 2018年7月22日
0.1.2 2018年7月22日
0.1.1 2018年7月20日
0.1.0 2018年7月6日

操作系统类别中排名430

Apache-2.0

105KB
2.5K SLoC

libwhp

Windows Hypervisor Platform API for Rust: https://docs.microsoft.com/en-us/virtualization/api/

这个crate利用了Rust中可用的安全性、生命周期、内存管理和错误处理功能,同时保留了原生Windows Hypervisor Platform (WHP) API的原设计。

先决条件

确保至少有

  • Windows 10版本17134(或更高版本)
  • Windows Server 1803(或更高版本)

启用Windows Hypervisor Platform并重启

Dism /Online /Enable-Feature /FeatureName:HypervisorPlatform
shutdown /r /t 0

最后但同样重要的是,安装Windows上的Rust

运行示例程序

  1. 克隆项目的存储库
git clone https://github.com/insula-rs/libwhp
cd libwhp
  1. 此示例包含一个有效负载(“guest”二进制文件),需要使用GCC编译,例如在WSL(Windows Subsystem for Linux)中。我们只需要make、gcc和ld。在Ubuntu上
wsl sudo apt-get update
wsl sudo apt-get dist-upgrade -y
wsl sudo apt-get install gcc make binutils -y
  1. 构建有效负载
pushd examples\payload
wsl make
popd
  1. 构建和运行示例
cargo run --example demo

这是它的作用

  • 检查虚拟机的存在
  • 创建分区
  • 设置各种分区属性,如允许的退出类型和CPUID结果
  • 分配和映射内存
  • 创建vCPU
  • 设置长模式(64位)的寄存器
  • 读取内存中的有效负载(payload.img)
  • 设置MMIO / IO端口指令模拟器和相关回调
  • 启动vCPU循环
  • 处理各种类型的退出:CPUID、MSR读/写、IO端口、MMIO、Halt等

依赖项

~145KB