macOS - vagrant up 失败,/dev/vboxnetctl:没有这个文件或目录。

169

这个有用,我发现了一个错误。通常的解决方案是重新安装VirtualBox,但还有更好的方法。

解决方案

sudo /Library/StartupItems/VirtualBox/VirtualBox restart
或者
sudo /Library/StartupItems/VirtualBox/VirtualBox start

VirtualBox 4.3+

在最新版本中,文件 (/Library/StartupItems/VirtualBox/VirtualBox) 不存在,因此您需要使用以下命令:

sudo launchctl load /Library/LaunchDaemons/org.virtualbox.startup.plist

错误

打印:http://d.pr/i/1Bvi

在控制VirtualBox的Vagrant所使用的CLI中执行VBoxManage时出现了错误。以下是命令和stderr的显示 命令:["hostonlyif", "create"]

Stderr: 0%... 进度状态:NS_ERROR_FAILURE VBoxManage: error: 无法创建专用主机适配器 VBoxManage: error: VBoxNetAdpCtl:添加新接口时出错:无法打开 /dev/vboxnetctl:没有那个文件或目录

VBoxManage: error: 详细信息:代码NS_ERROR_FAILURE(0x80004005), 组件HostNetworkInterface,接口IHostNetworkInterface VBoxManage: error: 上下文:"int handleCreate(HandlerArg*, int, int*)" 文件VBoxManageHostonly.cpp中第68行

关于此错误的Vagrant Git问题:https://github.com/mitchellh/vagrant/issues/1671#issuecomment-22304107


据称,VirtualBox 4.3.2 解决了每次启动后需要重新启动的问题。 - Nate Bundy
@lucas-serafim 你能否请注明这个问题是关于哪个操作系统的?例如,在常见的Windows或Linux安装中,既没有名为“launchctl”的二进制文件,也没有名为“/Library”的根目录。 - feeela
你好 @freeela,这是在OSX上的。 - Lucas Serafim
1
我使用的是macOS Monterey操作系统,但是其中的设置都无法正常工作。最终我只能卸载并重新安装VirtualBox,并在macOS的认证过程中允许Oracle,这样才使得一切正常运行。 - Deepan Prabhu Babu
10个回答

114

我正在运行macOS High Sierra 10.13.1和VirtualBox 5.2.2。

以下方法适用于我:

  1. 在“系统偏好设置”>“安全性与隐私”>“通用”下授予VirtualBox权限(这是macOS High Sierra的新要求)
  2. 打开终端并运行:sudo "/Library/Application Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh" restart

1
这对我也起作用了,我正在运行macOS High Sierra 10.13.1。 - Ivan Nikolov
2
适用于macOS 10.14(Mojave) - Bergrebell
谢谢!这对我来说也适用于macOS 10.14.2(莫哈韦)。 - Saleh Parsa
在 macOS 11.5.2、Virtualbox 6.1.26 和 vagrant 2.2.18 中工作过。 - Samuel Breu
3
最近苹果安全更新运行Big Sur后似乎需要这个。 - Daniel
显示剩余2条评论

29

这对我有用(macOS Monterey)。这将重新加载所有VirtualBox的内核扩展。

sudo kmutil load -b org.virtualbox.kext.VBoxUSB
sudo kmutil load -b org.virtualbox.kext.VBoxNetFlt
sudo kmutil load -b org.virtualbox.kext.VBoxNetAdp
sudo kmutil load -b org.virtualbox.kext.VBoxDrv

4
在我的 macOS Monterey 上,只需运行上述代码即可解决问题。谢谢。 - Tolga Can Günel
2
同样,macOS Monterey 用户 - 这样做 - dodgy_coder
3
我是macOS Monterey的用户。只需运行这些命令,问题就解决了。谢谢。 - arnabmaji19
3
您可能需要进入macOS系统偏好设置中的“隐私与安全”选项卡,解锁密钥图标并“批准”从Oracle软件安装程序,然后重新启动计算机! - Sliq

27

如果您的系统最近更新了内核,您可能需要重新运行vbox安装程序。如果是这种情况,当您运行virtualbox启动命令时,您将看到以下消息:

$ sudo /path/to/virtualbox start
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (2.6.32-358.23.2.el6.x86_64) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /etc/init.d/vboxdrv setup

         You will not be able to start VMs until this problem is fixed.

22
对于Mac电脑,运行sudo "/Library/Application Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh" restart 命令可以重新启动VirtualBox。 - jmj
3
在我的情况下,这并没有解决我的问题,我不得不删除VirtualBox并重新安装。希望这能帮到您! - Crisoforo Gaspar
这对我来说是问题的恰当解释,但是我在Arch上解决它的方法是使用Brad Pitchers的vboxreload解决方案。 - David Duncan
@JigarJoshi的Mac解决方案修复了在升级到OS X Sierra后的Vagrant问题。 - loafer
5
第一个评论以前是有效的,但现在我收到了这个错误: 卸载 VBoxUSB.kext 执行: /usr/bin/kmutil unload -b org.virtualbox.kext.VBoxUSB 卸载 VBoxNetFlt.kext 执行: /usr/bin/kmutil unload -b org.virtualbox.kext.VBoxNetFlt 卸载 VBoxNetAdp.kext 执行: /usr/bin/kmutil unload -b org.virtualbox.kext.VBoxNetAdp 卸载 VBoxDrv.kext 执行: /usr/bin/kmutil unload -b org.virtualbox.kext.VBoxDrv 错误:VBoxDrv.kext 已经加载 错误:VBoxUSB.kext 已经加载 错误:VBoxNetFlt.kext 已经加载 错误:VBoxNetAdp.kext 已经加载 - Vini.g.fer

21

当我在Ubuntu 17.10上使用主机模式适配器/桥接网络启动虚拟机时,vbox出现了一些问题。寻找答案时,我发现许多命令对于解决此类问题非常有用。以下是它们:

虚拟主机问题

无法打开/dev/vboxnetctl

vboxnet0 - 这是引起所有问题的罪魁祸首。

VBoxNetAdpCtl:添加新接口时出错:无法打开/dev/vboxnetctl:没有那个文件或目录。

这些命令没有特定的顺序。它们通常都很有用。

1)sudo modprobe vboxdrv

2)sudo modprobe vboxnetadp - (仅限主机接口)

3)sudo modprobe vboxnetflt - (使vboxnet0可访问)

如果您在安全启动运行时遇到问题,则建议禁用BIOS中的安全启动(或重新启动),然后执行第一个命令。

modprobe:致命错误:在目录/lib/modules/4.13.0-21-generic中未找到vboxnetftl模块

(桥接网络)

4)sudo apt-get install virtualbox-dkms(扩展)-> 执行完此命令后,请执行第1个命令

5)sudo vboxmanage hostonlyif create

这些有时可能有效:

1. service --status-all

2. service service_name restart


3
我使用Ubuntu 16.04,按照这里的第1-3步骤进行操作后,解决了我的问题(虚拟机现在已经能正常运行)。谢谢! - NineToeNerd
不必禁用安全启动,您可以自签名证书并将其添加到模块中。https://gist.github.com/fabiog1901/ec0b19b514c0d7abe4f30b715a1ccf00 - fabiog1901
在Manjaro(Arch)系统上,我遇到了同样的问题。运行前三个modprobe命令就足以让我摆脱错误。 - Brooks

7
尝试了以上所有的方法,虽然执行了一些命令,但是没有起作用。在我的Mac(El Captain)中并没有像/Library/StartupItems/Vir*这样的文件,以下的命令也失败了:
sudo /Library/StartupItems/VirtualBox/VirtualBox restart

重新安装最新版本的VirtualBox,然后运行以下命令可以帮助我启动虚拟机。
sudo launchctl load /Library/LaunchDaemons/org.virtualbox.startup.plist

重新安装虚拟机解决了我的问题。 - Matt
重新安装Vbox并运行该命令对我有效。没有其他修复方法奏效。操作系统为OS X Sierra 10.12.5。非常感谢! - KriiV
我从这个线程中学到了很多东西。只有在遵循了这些指示后,vagrant up 才开始在 Mac Os 10.13.3 上正常工作 :-) - Sergeon

6

我曾经遇到过类似的问题,在High Sierra上启动虚拟机时出现了问题。

macOS High Sierra 10.13引入了一个新功能,需要用户批准才能加载新安装的第三方内核扩展(KEXTs)。当请求加载用户尚未批准的KEXT时,加载请求将被拒绝。将KEXT加载失败视为硬错误的应用程序或安装程序需要更改以处理这种新情况。

要解决这个问题,必须在“系统偏好设置”>“安全性与隐私”中手动批准KEXT。

这是苹果的技术说明:

https://developer.apple.com/library/content/technotes/tn2459/_index.html


欢迎提供解决方案的链接,但请确保您的答案即使没有链接也是有用的:在链接周围添加上下文,以便其他用户了解它的内容和原因,然后引用您链接的页面中最相关的部分,以防目标页面不可用。仅仅提供链接的答案可能会被删除。 - Paul Roub
这个答案非常有用。 - BigDataKid
我的Vagrant崩溃了,出现了上述错误,但是通过这个方法解决了问题:在执行sudo "/Library/Application Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh" restart之后,问题得到了修复 :) 谢谢 - BlackBurn027

4

我曾经因为这个问题卡了一段时间。当我试图运行sudo:/Library..命令时,我一直看到“找不到命令”的提示。

但是,以下方法对我有效:

sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart

1
这对我在macOS Big Sur上起作用,但前提是我需要进入“系统偏好设置>安全性与隐私”,然后点击“详细信息”旁边的“某些系统软件需要您的注意才能使用”,接着授权并重新启动。 - TanguyP

1
感谢大家的帮助,这个方法对我有效。
  1. 在“系统偏好设置”>“安全性与隐私”>“通用”中授予VirtualBox权限
  2. 将/Applications/VirtualBox放入废纸篓
  3. 从.dmg文件重新安装VirtualBox

如何通过命令行安装?我正在尝试在Gitlab MacOS Beta主机上设置Docker。 - Marcello DeSales
1
谢谢!在升级到Monterey后,这里的其他解决方法都没有对我起作用。我需要先点击“安全与隐私”选项卡,然后再卸载和重新安装才能使其再次正常工作。 - Jain Waldrip

0

当我遇到错误时...

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 HostNetworkInterface,   interface IHostNetworkInterface
VBoxManage: error: Context: "int handleCreate(HandlerArg*, int, int*)" at line 68 of file    VBoxManageHostonly.cpp

以下方法适用于我,没有返回任何错误,然后我能够成功启动vagrant

sudo /Library/StartupItems/VirtualBox/VirtualBox restart

我没有这个“sudo /Library/StartupItems/VirtualBox/VirtualBox”,我的StartupItems是空的。 :( - Kadiyski
尝试执行 /Library/Application Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh @Kadiyski - Vini.g.fer

0

运行

$ sudo modprobe vboxdrv
$ sudo modprobe vboxnetadp
$ sudo vboxreload

4
为什么?请不要添加只有命令的回复。需要上下文才能理解。 - Christian
是的,我应该了解为什么我需要提供这些命令以及这些命令在GNU/Linux机器上的作用。 - Dimitrios Desyllas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接