3

我已经使用 VirtualBox 和来自 Vagrant 团队的默认 Ubuntu 12.04 64 位映像设置了一个 Vagrant VM(请参阅http://files.vagrantup.com/precise64.box)。

当我vagrant up在我的 MacBook Pro 上使用 OS X 10.8.5 时,在 90% 的情况下,我都会收到虚拟机进入无效状态的错误 ( aborted)。使用 UI 运行 VM 并没有进一步的帮助。

现在,在玩的时候,我随机发现如果我改变

config.vm.provider :virtualbox do |vb|
  vb.customize [ "modifyvm", :id, "--memory", 1024, "--cpus", 2 ]
end

config.vm.provider :virtualbox do |vb|
  vb.customize [ "modifyvm", :id, "--hwvirtex", "off", "--memory", 1024, "--cpus", 2 ]
end

一切都很好。谁能解释要做什么--hwvirtex以及off为什么这可以解决我的问题?

我对这个问题感到非常困惑,因为我使用了 Vagrant 团队的默认图像,而且我猜有很多人在 OS X 上运行这个图像。所以我希望在谷歌搜索时找到答案,但是我没有。

有什么建议吗?

使用che的提示以及有关Hardware vs software virtualization的文档,情况变得更糟:我了解此设置有什么好处,但不了解为什么如果我禁用硬件虚拟化它会起作用。

该文档指出:

尽管 VirtualBox 并不总是需要硬件虚拟化,但在以下情况下需要启用它:[…] VirtualBox 的 64 位来宾支持(2.0 版添加)和多处理(SMP,3.0 版添加)都需要硬件虚拟化启用。

由于 OS X 是 64 位的,guest 也是如此 - 如果我禁用硬件虚拟化,它为什么还能工作?

这个问题与编程无关,但它与程序员常用的工具有关。常见问题解答明确指出,欢迎提出此类问题,因此我将其发布在这里。

4

1 回答 1

3

奥拉·戈洛

看看你关于这个问题的推文;-)

这很简单。vboxmanage 文档

--hwvirtex on|off:在主机系统的处理器中启用或禁用硬件虚拟化扩展(Intel VT-x 或 AMD-V);

这与 vagrant 无关,而与 VirtualBox 无关。VirtualBox 有什么问题吗?我也在运行 10.8.5,但是没有任何问题,在我的持续交付场景或 puppet 编码中使用大量的 vagrant 和 vb。我大部分时间也在使用 Ubuntu 12.04 64。有时 32b。

希望这可以帮助。

于 2013-10-21T09:43:38.823 回答