Vagrant无法挂载VirtualBox共享文件夹

edw*_*yte 66 virtualbox vagrant vagrant-plugin

当前设置:带有Vagrant 1.9.3的Virtualbox 5.1.20

以前的工作设置:带有Vagrant 1.9.3的Virtualbox 5.1.18

我安装了最新版本的Virtualbox并尝试启动我的VM.文件夹安装已停止工作.相同的文件夹安装在Virtualbox 5.1.18中正常工作.我收到以下错误消息:

Vagrant无法挂载VirtualBox共享文件夹.这通常是因为文件系统"vboxsf"不可用.该文件系统通过VirtualBox Guest Additions和内核模块提供.请验证这些客人添加内容是否已在guest虚拟机中正确安装.这不是Vagrant中的错误,通常是由错误的Vagrant框引起的.对于上下文,尝试的命令是:

 mount -t vboxsf -o uid=1000,gid=1000 keys /keys 
Run Code Online (Sandbox Code Playgroud)

该命令的错误输出是:

mount: wrong fs type, bad option, bad superblock on keys,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try dmesg | tail or so.
Run Code Online (Sandbox Code Playgroud)

我试过手动安装vagrant-vbguest插件(via vagrant plugin install vagrant-vbguest),但没有修复.降级回5.1.18确实解决了这个问题,但这并不是理想的进展.

如何使用Virtualbox 5.1.20Vagrant 1.9.3进行文件夹安装?

Dav*_*viz 125

更新

在VirtualBox 5.1.22中修复.

(https://www.virtualbox.org/ticket/16670)

原始答案

在我的情况下,VM中的符号链接是错误的.登录VM:

$ vagrant ssh
Run Code Online (Sandbox Code Playgroud)

然后:

$ ls -lh /sbin/mount.vboxsf 
lrwxrwxrwx 1 root root 49 Apr 19 14:05 /sbin/mount.vboxsf -> /opt/VBoxGuestAdditions-5.1.20/other/mount.vboxsf
Run Code Online (Sandbox Code Playgroud)

这个链接坏了.当您查看/opt/VBoxGuestAdditions-5.1.20/时,您会看到子文件夹"other"不存在.这一行修复了:

$ sudo ln -sf /opt/VBoxGuestAdditions-*/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
Run Code Online (Sandbox Code Playgroud)

现在注销VM:

$ exit
Run Code Online (Sandbox Code Playgroud)

并检查它是否适合您:

$ vagrant reload
Run Code Online (Sandbox Code Playgroud)

但我无法修复链接,因为我的框内不存在/sbin/mount.vboxsf!

如果首先不存在链接/sbin/mount.vboxsf,则无法安装VBoxGuestAdditions.如果您在更新VirtualBox后未下载匹配的VirtualBox扩展包(v5.2.18及更高版本应在Virtualbox更新期间自动下载),则会发生这种情况.你现在可以这样做:

  • 暂停所有正在运行的VM.
  • 打开VirtualBox程序.
  • 开始下载VirtualBox Extension Pack并安装它.
  • 如果没有询问您是否要下载VirtualBox扩展包,请打开 - >文件 - >检查更新,以触发下载对话框.

如果VirtualBox扩展没有更新,则可能无法安装VBoxGuestAdditions,因为安装程序显示消息并且vagrant插件vbguest无法提示答案(这在vbguest v0.15.0中已"修复").你可以在"vagrant up"的输出中看到.应该有一个类似于这一行:

Do you wish to continue? [yes or no]
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,您可以手动运行安装程序.为此,请启动此框:

$ vagrant up
Run Code Online (Sandbox Code Playgroud)

然后触发vbguest再次尝试安装,但之后保留VBoxGuestAdditions ISO:

$ vagrant vbguest --do install --no-cleanup
Run Code Online (Sandbox Code Playgroud)

登录方框:

$ vagrant ssh
Run Code Online (Sandbox Code Playgroud)

手动运行安装程序:

$ sudo /mnt/VBoxLinuxAdditions.run
Run Code Online (Sandbox Code Playgroud)

最后的希望:DIY!

如果上述内容无效,请尝试手动安装guest虚拟机添加:

cd /opt
sudo wget -c http://download.virtualbox.org/virtualbox/5.1.28/VBoxGuestAdditions_5.1.28.iso -O VBoxGuestAdditions_5.1.28.iso
sudo mount VBoxGuestAdditions_5.1.28.iso -o loop /mnt
sudo sh /mnt/VBoxLinuxAdditions.run
Run Code Online (Sandbox Code Playgroud)

  • 作为一个FYI,这里是跟踪此错误修复的票据https://www.virtualbox.org/ticket/16670 (8认同)
  • 再次出现之后,我降级到了5.1.18 - 问题解决了;) (6认同)
  • VirtualBox 5.1.22 r115126和Vagrant 1.9.7也有同样的问题 (2认同)
  • 我和5.1.26有同样的问题 (2认同)

小智 37

安装vbguest插件在我的案例中使用VirtualBox 5.2.6和Vagrant 2.0.1:

vagrant plugin install vagrant-vbguest

  • 谢谢!`VirtualBox 5.2.6` 和 `Vagrant 2.0.2` 让 `GuestAdditions 5.2.6 运行 --- 好的。` 现在 (2认同)
  • 应该是最好的答案. (2认同)

Ari*_* I. 7

对我来说,问题在以下条件下得到解决:

环境:

  • VirtualBox 版本 6.0.4r128413
  • 流浪者版本 2.2.3

脚步:

从终端或命令行 ( cd)转到您的项目目录并运行以下命令:

  1. vagrant plugin install vagrant-vbguest 安装 Vagrant VB 来宾插件

  2. vagrant up

如果您收到有关vboxsf不可用的错误。那么也许您的 VirtualBox Guest Additions 没有正确安装。希望下面的命令可以解决您的问题。

vagrant ssh
sudo yum -y install kernel-devel
sudo yum update -y
exit
vagrant halt
vagrant up --provision
Run Code Online (Sandbox Code Playgroud)


not*_*man 5

已接受的方法对我的案例不起作用。

我的问题是:
使用命令(在主机上)安装虚拟主机来宾添加(在来宾计算机上):

vagrant plugin install vagrant-vbguest
Run Code Online (Sandbox Code Playgroud)

与主机上安装的 virtualbox 版本不匹配,我不断收到此错误。

在此输入图像描述

这个命令(在主机上)帮助我更清楚地理解:

vagrant vbguest --status
Run Code Online (Sandbox Code Playgroud)

它将验证主机和来宾计算机上的来宾添加是否一致。如果出现“Guestadditions did not match”警告,则通过 SSH 连接到您的虚拟机并首先运行以下命令以在您的计算机内安装来宾添加项:

sudo apt-get install virtualbox-guest-x11
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下命令强制在主机和来宾上安装正确版本的来宾添加项:

vagrant vbguest --do install
Run Code Online (Sandbox Code Playgroud)

之后您必须重新加载虚拟机:

vagrant reload
Run Code Online (Sandbox Code Playgroud)

现在您可以再次使用以下命令确认它们是否匹配:

vagrant vbguest --status
Run Code Online (Sandbox Code Playgroud)

参考文献 1
参考文献 2