如何避免 VMWare 中 VirtualBox 出现 CRITICAL_STRUCTURE_CORRUPTION 错误

如何避免 VMWare 中 VirtualBox 出现 CRITICAL_STRUCTURE_CORRUPTION 错误

我有与此处描述相同的设置:

https://stackoverflow.com/questions/17175696/running-vagrant-inside-vmware-vm

现在我经常收到带有 CRITICAL_STRUCTURE_CORRUPTION 错误的 BSOD,我想知道我是否可以摆脱它们。我读到一些观点,认为在这种嵌套虚拟化设置中,系统肯定会不稳定,但另一方面,它确实有效,而且人们似乎正在使用它。

在网上搜索此错误后,我已经升级到最新版本的 VMWare Player(Windows 8.1 上的 6.0.3)和 Virtualbox(VMWare 内的 Ubuntu 14.04.1 上的 4.3.14),并且我将 Vagrant Virtualbox Machine 中的 CPU 数量减少到 1,但错误仍然发生,有时在一小时左右后,并且仅在 VMWare Player 中运行 Vagrant Virtualbox 时发生。

我可以尝试什么来让它顺利运行?

答案1

根据VMWare 的网站答案如下:

此问题已在 vSphere 5.0 Update 3 中解决。

要临时解决此问题,请为受影响的虚拟机手动创建 CPUID 掩码:

要为受影响的虚拟机手动创建 CPUID 掩码,请执行以下操作:

  • 关闭虚拟机电源。
  • 右键单击虚拟机,然后单击编辑设置。
  • 单击选项选项卡。选择高级下的 CPUID 掩码。
  • 单击“高级”。

对于英特尔:

在寄存器列下,找到级别 80000001 下的 edx 寄存器。将其粘贴到值字段中:

----:0---:----:----:----:----:----:----

例如,cpuid.80000001.edx = ----:0---:----:----:----:----:----:----

对于 AMD:

  • 选择“AMD Override”选项卡。
  • 改变cpuid.80000001.edx.amd = -----------H--------------------
    cpuid.80000001.edx.amd = ----0-----------------------

单击“确定”关闭虚拟机属性。

答案2

我现在找到了一个解决方法。将 CPU 减少到一个会使蓝屏消失。虽然这不是完美的解决方案,但它有效,并且 Ubuntu + Vagrant 在 VM 中仍然运行得足够快。

相关内容