我今天将我的 Mac 升级到了 Monterey,现在运行时出现以下错误vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'tynesolutions/ruby-node-redis-mysql-ubuntu' version '2.0.0' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 80 (guest) => 3000 (host) (adapter 1)
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "047f549a-e0be-48d9-93d5-6b1958594689", "--type", "headless"]
Stderr: VBoxManage: error: The virtual machine 'vm_default_1635193007482_74329' has terminated unexpectedly during startup because of signal 10
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine
我尝试重新安装 Vagrant 和 Virtualbox,但没有成功。
答案1
这是一个已知问题,似乎与 VirtualBox 版本 6.1.28 有关。
随着 VirtualBox 版本 6.1.30 的发布,该问题已得到解决。
在 Vagrant 的官方 HashiCorp repo 中有一个关于此问题的健康而详细的帖子:“Mac OS Monterey 中的 Vagrant up 问题 #12557”
由于人们报告的总体行为相同,因此该问题似乎与 VirtualBox 6.1.28 甚至更早的 6.1.26 完全无关。
请注意您发布的具体错误:
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "047f549a-e0be-48d9-93d5-6b1958594689", "--type", "headless"]
失败的命令是headless
通过 Vagrant 启动虚拟机的默认选项。目前唯一的解决方法是将启动选项设置为gui
而不是headless
。
正如 Vagrant 官方文档中解释的那样:
GUI 与 Headless
默认情况下,VirtualBox 计算机以无头模式启动,这意味着主机上看不到计算机的 UI。有时,您需要一个 UI。常见用例包括想要查看计算机中可能正在运行的浏览器,或调试奇怪的启动问题。您可以轻松告诉 VirtualBox 提供程序使用 GUI 启动:
config.vm.provider "virtualbox" do |v| v.gui = true end
config.vm.provider "virtualbox" do
因此,只需在您的 Vagrantfile 中找到该块并进行设置v.gui = true
,它现在就可以工作了;尽管弹出一个 GUI,可能会有点烦人。
话虽如此,该问题线程中的另一个用户指出config.vm.network
网络命令可能不起作用。
所以这一切可能归结为在 Vagrant 2.2.19 中修复了这个问题?或者也许 VirtualBox 也存在问题?
令人困惑和烦恼,但希望这能有所帮助。
更新:这似乎是 VirtualBox 本身的问题,而不是 Vagrant 的问题。该问题似乎已在票号 20636标题为“VBoxHeadless 无法在 macOS Monterey 12.0.1 中运行 => 将在 SVN/下次维护中修复”并且根据用户“klaus”的评论:
最新 6.1测试构建已修复,但通常适用“未公证”警告,该警告已在那里记录,并带有“禁用 SIP”解决方法。
更新:在 VirtualBox 版本 6.1.30 中已修复;版本 6.1 更新日志明确引用票号20636:
VBoxHeadless:修复在 macOS Monterey 上运行时崩溃的问题(bug #20636)
答案2
升级到 Monterey 时我遇到了相同的错误。无论我怎么重新安装似乎都没用。
最终对我有用的是更新我的 Vagrantfile 以设置gui=true
virtualbox:
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
vb.cpus = 6
vb.gui = true # Add this line
end
这有点烦人,因为它会打开一个 VirtualBoxVM 窗口,其中包含虚拟机的控制台。但我能够最小化这个窗口,它不需要我输入任何内容就可以vagrant up
正常运行。