我已经使用 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 也是如此 - 如果我禁用硬件虚拟化,它为什么还能工作?
这个问题与编程无关,但它与程序员常用的工具有关。常见问题解答明确指出,欢迎提出此类问题,因此我将其发布在这里。