#apple #virtualization #framework #expose #set #capabilities #safe

virt-fwk

一个库,在 Rust 中暴露一组安全的 API,以解锁 Apple 的 Virtualization.framework 的功能。

1 个不稳定版本

0.1.0 2023 年 5 月 15 日

#924硬件支持

MIT 协议

89KB
2K SLoC

virt-fwk - Rust 对 Apple 的 Virtualization Framework 的绑定

virt-fwk 暴露一组安全的 API,以解锁 Apple 的 Virtualization.framework 在 Rust 中的功能。为了解释 Virtualization.framework,我直接引用了 Apple 文档中的以下内容。

Virtualization 框架提供了创建和管理 Apple 芯片和 Intel-based Mac 计算机上虚拟机 (VM) 的高级 API。使用此框架,您可以在自定义环境中启动和运行 macOS 或 Linux 操作系统。该框架支持虚拟 I/O 设备 (VIRTIO) 规范,该规范定义了许多设备类型的标准接口,包括网络、套接字、串行端口、存储、熵和内存气球设备。

要求。

这仍然是进行中的工作。因此,库目前仅支持最新的 macOS 和 Rust 版本

  • 高于或等于 macOS Ventura (13)。
  • rust 1.69.0 的最新版本,尽管很可能早期版本也能正常工作。只测试了最新版本。

入门

将以下行添加到您的 Cargo.toml 文件或运行 cargo add virt-fwk

[dependencies]
virt-fw = "0.1.0"

如果您喜欢通过全局 vz 模块名使用包,请使用以下内容。这允许您以类似的方式使用包,就像 vz golang 库 一样

[dependencies]
vz = { package="virt-fwk", version="0.1.0" }

重要

为了使用 macOS 虚拟化 API,您的程序应具有 com.apple.security.virtualization 权限。要添加此权限,请创建一个权限文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.virtualization</key>
    <true/>
</dict>
</plist>

然后使用以下命令使用此权限对您的程序进行签名

$ codesign --entitlements <FILENAME>.entitlements -s - <YOUR BINARY PATH>

如果您想使用 VZBridgedNetworkDeviceAttachment,还需要添加 com.apple.vm.networking 权限。

依赖项

~1.5MB
~22K SLoC