微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apple Hypervisor在MacOS Big Sur beta 11.0.1上完全损坏

如何解决Apple Hypervisor在MacOS Big Sur beta 11.0.1上完全损坏

我正在尝试制作一个基本的命令行工具,该工具可以制作VM并使用Apple Hypervisor运行某些东西。

当我尝试运行hv_vm_create(HV_VM_DEFAULT)时,给我一个错误代码-85377023。

我尝试强制应用沙盒并为Big Sur编译目标设置相应的权利,现在我在控制台中得到以下输出

Killed

据我了解,这是AMFI杀死了我的过程。这是错误还是我的问题?

当我决定钻研兔子时,我发现在MacOS Big Sur 11.0.1 beta版本发行说明中,它们已弃用 hv_vm_run(_:),而api文档指出功能在beta中。

我没有用内核标志禁用AMFI,但是我几乎可以肯定这不是预期的行为。而且,无论如何,hv_vm_run(_:)都可以从不被弃用或处于测试版。我确信此功能早在Big Sur之前就已经存在。

如果有人可以帮助我或者只是给我答复,请这样做。不要让我处于黑暗中,因为我不想浪费时间在可能会损坏的东西上。

谢谢。

P.S:我知道Apple Developer论坛中已经有一个主题,我是发布该主题的人。不过,没有人在那儿回答问题,因为他们的社区甚至没有堆栈溢出那么大。

解决方法

您看到的这个错误代码在macOS方面只是一个糟糕的UX:它真正试图传达的是缺少com.apple.security.hypervisor权利。

如果您使用的是Xcode,则可以这样添加它:

  1. ⌘N并创建一个新的属性列表文件。
  2. 添加一个新属性,其键为com.apple.security.hypervisor,并且布尔值设置为YES
  3. 转到项目目标构建设置签名代码签名权利,并确保它使用您新创建的权利文件。

或者,您可以使用命令行:

codesign -s - --entitlements app.entitlements --force path/to/your/binary

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>

解决此问题的另一种方法是,只需在Xcode的设置中将部署目标设置为10.13(对Alexander Pinske进行设置):

setting Xcode deployment target in the General tab

之所以可行的原因很可能是由于向后兼容,因此请记住,这可能会在将来的macOS版本中或在新推出的平台(如Apple Silicon)上发生改变。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。