Ome*_*ame 5 c virtualization hyper-v hypervisor swift
我正在尝试制作一个基本的命令行工具,该工具可以制作 VM 并使用 Apple Hypervisor 运行某些东西。
当我尝试运行时,hv_vm_create(HV_VM_DEFAULT)它给了我一个错误代码 -85377023。
我尝试强制执行 App Sandbox 并相应地为 Big Sur 编译目标设置权利,现在我在控制台中获得了以下输出:
Killed
Run Code Online (Sandbox Code Playgroud)
据我了解,这是 AMFI 扼杀了我的进程。这是错误还是我的问题?
当我决定深入研究时,我发现在 MacOS Big Sur 11.0.1 测试版发行说明中,他们弃用了 hv_vm_run(_:),而 API 文档说该功能处于测试阶段。
我没有使用内核标志禁用 AMFI,但我几乎可以肯定这不是预期的行为。而且,不管是什么,hv_vm_run(_:)可从来没有被废弃或处于测试阶段。我确信这个功能在 Big Sur 之前就已经存在了。
如果有人可以帮助我解决这个问题或只是做出回应,请这样做。不要让我陷入黑暗,因为我不想在可能损坏的东西上浪费时间。
谢谢你。
PS:我知道苹果开发者论坛上已经有一个帖子了,我是发帖的人。尽管如此,没有人回答那里,因为他们的社区甚至没有 Stack Overflow 那么大。
您看到的这个错误代码只是 macOS 方面的一个糟糕的用户体验:它真正想要传达的com.apple.security.hypervisor是缺少权利。
如果您使用的是 Xcode,则可以像这样添加它:
com.apple.security.hypervisor和布尔值设置为的新属性YES。或者,您可以使用命令行:
codesign -s - --entitlements app.entitlements --force path/to/your/binary
Run Code Online (Sandbox Code Playgroud)
其中app.entitlements内容如下:
<?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.hypervisor</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
你解决这个另一种方式是简单地将设置部署目标,以10.13在Xcode的设置(道具亚历山大Pinske):
这样做的原因很可能是由于向后兼容性,所以请记住,这可能会在未来的 macOS 版本中发生变化,或者可能在 Apple Silicon 等新推出的平台上发生变化。