如果安装失败或显示内核驱动程序错误,如何在 MacOS Mojave 中安装 VirtualBox
目录:
如果您尝试在 macOS Mojave 中安装 VirtualBox,您可能已经注意到安装有时会失败,并显示一般的“安装失败”错误消息。然后,当尝试运行 VirtualBox 时,您可能会遇到另一个错误,提示“未安装内核驱动程序”并且 VirtualBox 无法运行。我们将介绍安装/运行 VirtualBox 问题的两种不同解决方案,一种涉及 Gatekeeper 绕过,另一种使用 Gatekeeper 异常(适用于 macOS 10.14.5 或更高版本)。
安装失败和内核模块无法成功加载的原因是由于MacOS Mojave的安全限制,因此为了能够成功安装VirtualBox并运行应用程序,您需要相对简单地绕过上述安全限制(或者,您也可以完全禁用 Gatekeeper,但通常不推荐这样做)。顺便说一句,虽然这篇文章显然是针对 VirtualBox 的,但您会发现安装其他包含内核扩展的应用程序也需要同样的一般过程。
如何在MacOS Mojave中成功安装VirtualBox(如果失败)
假设您已经将VirtualBox 下载到Mac 上(可在此处免费下载),以下是如何在MacOS Mojave 中成功安装和运行VirtualBox:
- 像往常一样运行VirtualBox安装程序,你最终会看到“安装失败”消息
- 安装失败后退出VirtualBox安装程序
- 现在下拉 Apple 菜单并打开系统偏好设置
- 选择“安全和隐私”并转到“安全”首选项面板中的“常规”选项卡,然后单击锁定按钮并输入管理员密码
- 在“安全常规”部分的底部,查找“系统软件来自开发商'Oracle America, Inc' 的系统软件被阻止加载”的消息,然后单击“允许”按钮
- 重新启动VirtualBox安装程序并像往常一样继续安装,现在应该按预期成功
继续并像往常一样运行VirtualBox,它应该可以正常加载而没有任何进一步的内核驱动程序错误消息。如果您仍然遇到问题,请参阅下一步,这是在更高版本的 MacOS 中所需的不同步骤。
无法在MacOS 10.14.5 或更高版本中安装/运行VirtualBox?尝试这个
如果您尝试在运行 macOS Mojave 10.14.5 或更高版本的计算机上安装 VirtualBox,您可能会遇到 App Store 外应用程序的公证要求。要解决这个问题(现在直到 VirtualBox 被公证)尝试以下操作:
- 通过重新启动并同时按住COMMAND + R键将Mac重新启动到恢复模式
- 在“实用程序”屏幕上,下拉“实用程序”菜单并选择“终端”以从恢复模式启动终端
- 输入以下命令:
- Hit Return,然后像往常一样以正常启动方式重新启动Mac
spctl kext-consent add VB5E2TV963
此解决方案已通过 VirtualBox 论坛发布在我们的下方评论中,似乎适用于许多运行 macOS 10.14.5 或更新版本的用户(感谢留下此解决方案的各种评论!)。显然“VB5E2TV963”是 Oracle 的代码,在命令行中输入这个 Gatekeeper 异常将允许 VirtualBox 安装在具有公证要求的最新版本的 MacOS 中。这可能只是暂时的必要,直到 VirtualBox 最终通过 Apple 概述的流程得到公证。
现在尝试安装和/或运行VirtualBox,它应该在最新版本的MacOS系统软件中正常工作。
在下面的屏幕截图中,您看到VirtualBox 在MacOS 10.14.x 和BeOS / Haiku OS 中运行。
如果您是高级用户(如果您首先运行虚拟化软件和虚拟机,您可能就是高级用户)那么您可能有兴趣允许从 MacOS 中的任何位置安装应用程序按照此处的说明调整 Gatekeeper。
对于一些快速背景,MacOS Mojave 10.14.5 和更高版本的 MacOS 需要公证才能安装 App Store 之外的一些应用程序。此外,GateKeeper 是 Mac OS 安全机制,旨在防止不受信任的应用程序在 Mac 上运行或安装。默认情况下,更现代的 MacOS 版本具有特别严格的 Gatekeeper 设置,并且会抛出错误消息,指出应用程序无法打开,因为它来自身份不明的开发人员等等,尽管只需右键单击并选择“打开”大多数应用程序都允许您绕过该机制,您也可以从“安全”首选项面板中绕过它。最新的 macOS 版本,如 Mojave,更进一步,还需要开发人员对应用程序进行公证(或按照后面教程中的说明手动绕过),或者绕过 Gatekeeper 以安装捆绑内核扩展的某些软件,例如虚拟盒子。如果您对 MacOS 的这些保护机制不满意,您始终可以完全禁用 Gatekeeper 并同时禁用系统完整性保护,但通常不建议这样做。