5个版本

0.2.0 2022年5月1日
0.0.12 2019年12月29日
0.0.11 2019年12月29日
0.0.10 2019年12月29日
0.0.9 2019年12月28日

#84 in 模拟器


用于 uhyve

MIT 许可证

86KB
1.5K SLoC

xhypervisor

crates.io Docs.rs License

xhypervisor 是一个 Rust 库,它利用了在 OS X 上启用虚拟机硬件加速执行的功能。它是 hypervisor-rs 的分支,并针对 uhyveehyve 的开发进行了修改。基于 ahv,我们添加了对苹果硅上 Apple Hypervisor Framework 的支持。

它绑定到 OS X 上的 Hypervisor 框架,并通过 hypervisor 模块提供了一个安全的 Rust 接口,以及通过 xhypervisor::ffi 模块提供了一个不安全的外部函数接口。

一个从 16 位虚拟机 衍生的 xhypervisor 被用作测试示例,该示例最初发布在博客文章 http://www.pagetable.com/?p=764 中。

先决条件

要使用此库,您需要

  • OS X Yosemite (10.10) 或更高版本

  • 具有 VT-x 功能的 Intel 处理器或具有虚拟化支持的苹果硅处理器。要验证这一点,请在终端运行并预期以下结果

    $ sysctl kern.hv_support
    kern.hv_support: 1
    

状态

  • 警告:苹果硅支持处于早期阶段
  • 访问 x86 寄存器
  • 访问 aarch64 寄存器
  • x86:访问特定于模型的寄存器 (MSRs)
  • 将客户物理内存段映射到客户物理地址空间
  • 虚拟 CPU
    • 执行和中断
    • 强制刷新缓存的状
    • 使转换后备缓冲区 (TLB) 无效
    • 访问浮点 (FP) 和 SIMD 状态
    • 获取累积执行时间
    • 同步客户时间戳计数器 (TSC)
  • x86:访问虚拟机控制结构 (VMCS) 的字段

依赖项

~280–780KB
~18K SLoC