Vagrant 无法挂载 VirtualBox 共享文件夹

Vagrant was unable to mount VirtualBox shared folders

当前设置:Virtualbox 5.1.20Vagrant 1.9.3

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

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

Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem "vboxsf" is not available. This filesystem is made available via the VirtualBox Guest Additions and kernel module. Please verify that these guest additions are properly installed in the guest. This is not a bug in Vagrant and is usually caused by a faulty Vagrant box. For context, the command attempted was:

 mount -t vboxsf -o uid=1000,gid=1000 keys /keys 

The error output from the command was:

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.

我曾尝试手动安装 vagrant-vbguest 插件(通过 vagrant plugin install vagrant-vbguest),但没有解决任何问题。降级回 5.1.18 确实解决了这个问题,但这并不理想。

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

更新

Fixed in VirtualBox 5.1.22.

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

原回答

在我的例子中,VM 中的 symlink 是错误的。 登录虚拟机:

$ vagrant ssh

然后:

$ 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

这个link坏了。当您查看 /opt/VBoxGuestAdditions-5.1.20/ 时,您会发现子文件夹 "other" 不存在。 此行修复了:

$ sudo ln -sf /opt/VBoxGuestAdditions-*/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf

现在注销虚拟机:

$ exit

并检查它是否适合您:

$ vagrant reload

但是我无法修复 link 因为 /sbin/mount.vboxsf 在我的盒子里不存在!

如果 link /sbin/mount.vboxsf 首先不存在,则无法安装 VBoxGuestAdditions。如果您在更新 VirtualBox 后没有下载匹配的 VirtualBox Extension Pack(v5.2.18 及更高版本应该在 Virtualbox 更新期间自动下载),就会发生这种情况。你现在可以这样做了:

  • 停止所有 运行ning 虚拟机。
  • 打开 VirtualBox 程序。
  • 开始下载 VirtualBox Extension Pack 并安装它。
  • 如果系统未询问您是否要下载 VirtualBox 扩展包,请打开 -> 文件 -> 检查更新,以触发下载对话框。

如果没有 VirtualBox Extension 的更新,则可能无法安装 VBoxGuestAdditions,因为安装程序会显示一条消息并且 vagrant 插件 vbguest 无法提示回答(此 is "fixed" in vbguest v0.15.0)。您可以在 "vagrant up" 的输出中看到这一点。应该有这样一行:

Do you wish to continue? [yes or no]

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

$ vagrant up

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

$ vagrant vbguest --do install --no-cleanup

登录框:

$ vagrant ssh

运行 手动安装程序:

$ sudo /mnt/VBoxLinuxAdditions.run

最后的希望:DIY!

如果以上方法均无效,请尝试手动安装来宾添加项:

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

从 homestead.yaml 中删除类型:"nfs" 为我修复了它。 Win 10,Vagrant 1.9.7,laravel 5.4,homestead。

对我来说,在重新引导访客系统后执行以下命令很有帮助:

cd /opt/VBoxGuestAdditions-*/init  
sudo ./vboxadd setup

我找到了解决方案 。参考这个 post 你需要在触发命令之前停止 vboxadd(我没有这样做,因为我不知道 vboxadd 是什么)。

在我使用 VirtualBox 5.2.6 和 Vagrant 2.0.1 的情况下安装 vbguest 插件有效:

vagrant plugin install vagrant-vbguest

这对我有用...运行 以下内容:

vagrant plugin repair

然后

vagrant plugin expunge --reinstall

然后

vagrant reload

对于和我遇到几乎相同问题的人,下面是解决方案

TLDR

  • VirtualBox 来宾因 system is currently not set up to build kernel modules
  • 而失败
  • 解决办法是卸载kernel-headers.x86_64 0:3.10.0-862.9.1.el7
  • 然后安装kernel-devel-3.10.0-327.el7.x86_64

解决方案

  1. vagrant ssh

  2. sudo rpm -e kernel-devel-3.10.0-862.9.1.el7.x86_64

  3. sudo wget ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/7.0/x86_64/updates/security/kernel-devel-3.10.0-327.el7.x86_64.rpm //下载文件

  4. sudo rpm -Uvh kernel-devel-3.10.0-327.el7.x86_64.rpm //使用第3步下载的文件

  5. exit

  6. vagrant reload

详细信息:问题

  1. 执行 vagrant up 但失败并出现类似错误,除了

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

  1. 进一步阅读日志,我注意到下面的关键词

Installing Virtualbox Guest Additions 5.2.16 - guest version is 5.1.10

An error occurred during installation of VirtualBox Guest Additions

This system is currently not set up to build kernel modules.

Please install the Linux kernel "header" files matching the current kernel

packages containing the headers are probably: kernel-devel kernel-devel-3.10.0-327.el7.x86_64

  1. 进一步阅读日志

Package kernel-headers.x86_64 0:3.10.0-862.9.1.el7 will be installed

No package kernel-devel-3.10.0-327.el7.x86_64 available.

  1. 我的客人是我需要 kernel-devel-3.10.0-327.el7.x86_64 才能工作

详情:我的环境

  • bento/centos-7.2
  • 流浪者版本:2.0.4
  • 虚拟盒子版本:5.2.16

来源

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

环境:

  • VirtualBox 版本 6.0.4r128413
  • Vagrant 版本 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

我必须做的是 运行 下面的命令将 nfs 添加到 windows

vagrant plugin install vagrant-winnfsd

来源:https://peshmerge.io/how-to-speed-up-vagrant-on-windows-10-using-nfs/

我的案例没有被接受。

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

vagrant plugin install vagrant-vbguest

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

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

vagrant vbguest --status

它将验证主机和来宾机器上的来宾添加是否一致。 如果你收到 Guest additions did not match 警告然后 SSH 进入你的虚拟机然后 运行 下面的命令首先安装 guest您机器中的附加项:

sudo apt-get install virtualbox-guest-x11

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

vagrant vbguest --do install

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

vagrant reload

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

vagrant vbguest --status

References 1
References 2

运行 这个命令:

 vagrant vbguest --do install --no-cleanup

您可能有答案(安装 VirtualBox Guest Additions 期间发生错误 x.x.x。某些功能可能无法按预期工作。在大多数情况下,安装 VirtualBox Guest Additions 是可以的“Window 系统驱动程序”安装失败。)

别担心,它会起作用的。

我的解决方案是针对centos7 boxes。 未安装 vbguest 添加文件夹。这与您使用的盒子中的内核过时有关。

将以下行添加到您的 vm 定义中:

config.vm.define "centos7" do |box| 
   box.vbguest.installer_options = { allow_kernel_upgrade: true }

更新你的 vagrant 虚拟机:

vagrant up --provision

这样内核将被更新,来宾添加将被挂载和安装。 您将在此过程中看到重新启动。 资料来源:https://www.puppeteers.net/blog/fixing-vagrant-vbguest-for-the-centos-7-base-box/