Vagrant 无法挂载 VirtualBox 共享文件夹

标签 vagrant virtualbox vagrant-plugin

当前设置:Virtualbox 5.1.20Vagrant 1.9.3

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

我安装了最新版本的 Virtualbox 并尝试启动我的虚拟机。文件夹安装已停止工作。相同的文件夹安装在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 )

原始答案

就我而言,虚拟机内的符号链接(symbolic link)是错误的。 登录虚拟机:

$ 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

此链接已损坏。当您查看/opt/VBoxGuestAdditions-5.1.20/内部时,您会发现子文件夹“other”不存在。 此行修复了:

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

现在注销虚拟机:

$ exit

并检查它是否适合您:

$ vagrant reload

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

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

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

如果 VirtualBox 扩展没有更新,则可能无法安装 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!

如果上述方法均不起作用,请尝试手动安装 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

关于Vagrant 无法挂载 VirtualBox 共享文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43492322/

相关文章:

windows - 在与 ssh + Bash 一起使用并在本地与 Git 一起使用的 Windows Powershell 中设置 TERM 环境变量?

virtualbox - 如何从 VDI 中提取文件

postgresql - 如何使用 vagrant 使用 pgadmin 的 GUI 工具

mysql - 将 MySQL Workbench 连接到 vagrant 时出现 SSH 问题

git - 在 vagrant+chef 设置中使用带密码的 ssh key

vagrant - 为什么 `vagrant up` "ifdown eth1"SSH 测试失败?

android - Calabash Android 脚本停止

laravel - 如何将Homestead/VM从C盘运行移至F盘?

ruby - vagrant-aws 插件安装错误

centos - 如何在不需要 vagrant-vbquest 插件的情况下创建 Vagrant 基础框?