3 个版本
0.1.2 | 2022 年 1 月 27 日 |
---|---|
0.1.1 | 2021 年 6 月 29 日 |
0.1.0 | 2021 年 6 月 29 日 |
#77 在 macOS 和 iOS API
62KB
1K SLoC
hv
hv
是 Hypervisor 框架的高级 Rust 绑定。
使用 Rust 在轻量级 Hypervisor 之上构建虚拟化解决方案
- 完全支持 Hypervisor 框架。
- 支持 Apple Silicon。
- 安全 Rust API。
请参阅 仓库 了解最新更改和更新。
要求
hypervisor framework
在运行时,使用 sysctl
确定特定机器上是否有 Hypervisor API 可用。
$ sysctl kern.hv_support
kern.hv_support: 1
为了使用 Hypervisor API,您的应用必须具有 com.apple.security.hypervisor
权限。有关示例,请参阅 example.entitlements。
使用以下命令对本地开发进行二进制签名:
$ codesign --sign - --force --entitlements=example.entitlements ./binary
Rust
在最新稳定版 Rust (1.53.0+) 上开发和测试。
请确保已安装 Xcode 并不要忘记运行 xcode-select --install
,否则 bindgen
可能会失败,找不到 Hypervisor 头文件。
用法
此 crate 使用 hv-sys
示例
以下是在 Apple Silicon 上基本 "Hello world" 示例。
// Init VM
let vm = Arc::new(hv::Vm::new(std::ptr::null_mut())?);
// Initialize guest memory
vm.map(load_addr, GUEST_ADDR, MEM_SIZE, hv::Memory::READ)?;
// Create VCPU
let cpu = vm.create_cpu()?;
// Set regs
cpu.set_reg(Reg::PC, GUEST_ADDR)?
cpu.set_reg(Reg::X1, GUEST_RESULT_ADDR)?
loop {
cpu.run().expect("Failed to run CPU");
let info = cpu.exit_info();
println!("{:?}", info);
break;
}
依赖关系
~0–1.9MB
~36K SLoC