-1

我正在运行带有 Vagrant 2.2.19 和 VirtualBox 6.1.30 的 Mac OSX Monterey 12.0.1。当我尝试通过 mac 终端使用vagrant up. 返回此错误消息:

Bringing machine 'homestead' up with 'virtualbox' provider...
==> homestead: Checking if box 'laravel/homestead' version '11.5.0' is up to date...
==> homestead: Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to create the host-only adapter
VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg *)" at line 95 of file VBoxManageHostonly.cpp

我已经尝试卸载并重新安装 VirtualBox 和 Vagrant 以及重新启动 OSX,但我仍然收到相同的上述消息。

在我寻找答案的过程中,我不断收到将其添加到我的 Vagrantfile 的建议,但我不确定它需要插入的位置,因为它目前没有在我的文件中,也没有人指出要在文件中插入的位置它:

config.vm.provider "virtualbox" do |v| v.gui = true end

此外,在 Vagrant 的代码库中,我发现了这个片段(https://github.com/hashicorp/vagrant/blob/5b501a3fb05ed0ab16cf10991b3df9d231edb5cf/plugins/providers/virtualbox/driver/base.rb)表明它可能是一个内核驱动程序需要安装或正确安装。但我没有找到任何关于驱动程序安装的参考资料。

if r.stderr =~ /failed to open \/dev\/vboxnetctl/i
  # This catches an error message that only shows when kernel
  # drivers aren't properly installed.
  @logger.error("Error message about unable to open vboxnetctl")
  raise Vagrant::Errors::VirtualBoxKernelModuleNotLoaded
end

任何有关如何更改 Vagrant 或 VirtualBox 的配置以获取 vagrant 并传递错误消息的指导将不胜感激。

4

1 回答 1

0

有人将我指向这篇文章:https ://laracasts.com/discuss/channels/general-discussion/homestead-macos-monterey-boot-issue-headless-error-virtualbox?page=1&replyId=744904

由于我使用的virtualbox 6.1.30 比本文中列出的版本更新,并且6.1.30 修复了virtualbox 安装,因此我决定继续重试列出的内核扩展命令(在确认它们引用的文件已经存在之后)。

命令是:

sudo kextload /Library/Application\ Support/VirtualBox/VBoxDrv.kext -r /Library/Extensions
sudo kextload /Library/Application\ Support/VirtualBox/VBoxNetAdp.kext -r /Library/Extensions
sudo kextload /Library/Application\ Support/VirtualBox/VBoxNetFlt.kext -r /Library/Extensions
sudo kextload /Library/Application\ Support/VirtualBox/VBoxUSB.kext -r /Library/Extensions

第二个命令响应我需要重新启动。所以我忽略了,继续运行其余命令,然后重新启动计算机。

然后在 Homestead 项目目录中我vagrant up再次运行。 这次它成功运行并且仍然在无头运行 - 有点像我。:)

附加说明(如果我需要回来寻找自己的答案):

  • vagrant 需要一段时间才能启动,因为它实际上是在构建要使用的 virtualbox 环境。
  • 为 laravel 项目运行它,并The Mix manifest does not exist在运行 php artisan serve 并导航到 localhost 后收到。为了解决我跑了php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"
  • (如果我没记错的话)在此步骤中,我需要转到 Mac 系统偏好设置 > 安全和隐私设置,然后单击allow
  • 其次是npm ci && npm run dev
  • 最后运行npm run watch
于 2021-11-24T16:09:55.890 回答