Vagrant错误:无法挂载VirtualBox共享文件夹(访客添加,vboxsf)

时间:2017-02-06 17:57:50

标签: windows vagrant virtualbox shared-directory vagrant-windows

问题

我在Windows 10上安装了Vagrant,因此我可以在虚拟机中创建个人本地开发环境。我所读到的关于Vagrant的一切都说我甚至可以通过NAT端口转发来启动多个系统并测试它们之间的通信。但首先,我只是希望在与其余部分相距太远之前创建一个开发环境虚拟机。

我根据SitePoint教程安装了VirtualBox,Vagrant,PuTTy和PuTTYGen:https://www.sitepoint.com/getting-started-vagrant-windows/。接下来,我在C:驱动器上创建了一个vagrant项目文件夹,vagrant init,删除了Vagrantfile,最后删除了vagrant init ubuntu/trusty64。然后我做了vagrant up,但是该过程因错误而失败:

  

Vagrant无法挂载VirtualBox共享文件夹。这通常是   因为文件系统" vboxsf"不可用。这个文件系统是   通过VirtualBox Guest Additions和内核模块提供。   请确认这些客人添加内容已正确安装在   客人。这不是Vagrant中的错误,通常是由错误引起的   流浪者的盒子。对于上下文,尝试的命令是:

     

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

     

命令输出的错误是:

     

:没有这样的文件或目录

这是我的Windows命令行的屏幕截图:

Screenshot of Vagrant/VirtualBox error

这是一个文字版本:

C:\vagrant\sitepoint-test-2017-02-05>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: A newer version of the box 'ubuntu/trusty64' is available! You currently
==> default: have version '20160602.0.0'. The latest is version '20170202.0.0'. Run
==> default: `vagrant box update` to update.
==> default: Setting the name of the VM: sitepoint-test-2017-02-05_default_1486399403587_55255
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/vagrant/sitepoint-test-2017-02-05
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 vagrant /vagrant

The error output from the command was:

: No such file or directory

我的设置

OS: Microsoft Windows [Version 10.0.14393]
VirtualBox Version: 4.3.10 r93012
GuestAdditions Version: ???
Vagrant Version: 1.9.1 (Latest)
PuTTy Version: 0.67
PuTTYGen Version: 0.67

插件&已安装扩展程序

Vagrant:
- vagrant-share (1.1.6, system)
- vagrant-vbguest (0.13.0)

我已经尝试了什么

This post似乎是我研究中最有希望的。

不幸的是,提供的解决方案和提供的任何链接都没有解决问题。我已经尝试了很多东西,但我不是系统管理员(我猜测的是你需要解决此问题的技能组合)。许多"解决方案"特别令人不安。从2013/2014开始,最近表示不再工作。这些解决方案涉及与符号链接不起作用,安装像vagrant-vbguest这样的插件,以及关于vbox添加不匹配的东西。我并不是很了解所有这些,但我尽我所能。以下是我已经尝试过但还没有解决的问题:

  1. vagrant plugin install vagrant-vbguest。 Vagrant将插件显示为已安装,但我在vagrant up上收到相同的错误。

  2. 我在研究此问题时所阅读的链接列表没有提供可行的解决方案。

  3. 我的问题

    1. 我怀疑问题出在VirtualBox上,而不是Vagrant。这是真的吗?

    2. 我该如何解决这个问题,以便继续学习本教程?

    3. 自2014年左右以来,Stack Overflow上回答的Vagrant问题似乎有了大幅下降。这是什么原因?是否不再考虑Vagrant / VirtualBox"最佳实践"?是否有更好的解决方案,因此用户忽略了流浪问题?

    4. 同样,我不是系统管理员,但我技术娴熟,可以遵循技术指导。

11 个答案:

答案 0 :(得分:28)

  

您可以降级VirtualBox或编辑文件中的行:

     

在我的设置中,这是第206行:

     

C:\ HashiCorp \流浪\嵌入\宝石\宝石\流浪-1.9.2 \ lib中\流浪\ UTIL \ platform.rb

     

在我的主机上。

我这样做了,它在Windows 10上运行良好!我想补充一下第206行:

编辑前:“\\?\”+ path.gsub(“/”,“\”)

编辑后:path.gsub(“/”,“\”)

答案 1 :(得分:24)

vagrant plugin install vagrant-vbguest

这对我不起作用,它似乎与vagrant 1.9.2不兼容,我卸载了最新版本的虚拟机箱(5.1.16)并安装了最新版本的vagrant 1.9.2版本5.1.12和家园,它适合我。

答案 2 :(得分:12)

Guest Additions与VirtualBox的版本不兼容。自动更新VirtualBox Guest Additions将解决可能相关的问题:

  

vagrant plugin install vagrant-vbguest

我用这些堆栈解决了这个问题:

  • Windows 10
  • Oracle VirtualBox 5.1.16
  • Vagrant 1.9.2
  • config.vm.box =“hashicorp / precise64”

答案 3 :(得分:8)

可能有多种原因:

  1. guest虚拟机添加的版本与VirtualBox的版本不匹配,为此您可以通过运行vagrant plugin install vagrant-vbguest
  2. 来更新guest虚拟机添加的版本
  3. 你在Windows上遇到了一个带有NFS的流浪汉错误:应该修复所以可能尝试更新到最新版本的Vagrant和VirtualBox
  4. 在这个github问题https://github.com/fideloper/Vaprobash/issues/92中,您可以测试两件事:使用winnfsd插件(https://github.com/winnfsd/vagrant-winnfsd)或尝试配置没有NFS的默认挂载
  5. 我遇到了同样的问题,而且只是客人添加不是最新的...

    UDPATE :Vagrant with Windows on Windows(第2点)上的错误已在5.1.18版中修复,重新出现在5.1.20版本中,并在5.2版中再次修复。< / p>

答案 4 :(得分:8)

VirtualBox 5.1.18中解决了这个问题。

答案 5 :(得分:3)

从5.1.16降级到Virtual Box 5.1.14可以正常工作。

答案 6 :(得分:3)

我正在使用Vagrant 1.9.4和VirtualBox 5.1.20。这里没有解决方案帮助了我。

我终于通过禁用来宾添加的自动更新解决了这个问题:

Vagrant.configure("2") do |config|
    config.vbguest.auto_update = false
    [...]
end

它更像是一个hacky解决方案而不是解决方案。我仍然不知道实际问题是什么,但我认为它与此有关:https://www.virtualbox.org/ticket/16670

答案 7 :(得分:2)

Virtualbox 5.1.20中也有回归

流浪者问题: https://github.com/mitchellh/vagrant/issues/8502

Virtualbox问题: https://www.virtualbox.org/ticket/16670#comment:4

现在的修复是回到Virtualbox 5.1.18的角色。

答案 8 :(得分:2)

这是Vbox中的错误。有一个解决方案可以解决。

登录Vbox guest虚拟机:默认密码为(vagrant / vagrant)

su
ln -sf /opt/VBoxGuestAdditions-5.1.20/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

关闭

从本地计算机cmd提示符运行cmd:

vagrant up

它会起作用。

答案 9 :(得分:1)

我有类似的问题,如果它不匹配则检查标题然后在命令

下运行

CentOS:sudo yum update&amp;&amp; sudo yum -y install kernel-headers kernel-devel

流浪汉重装

它对我有用。

答案 10 :(得分:0)

摘要

同步/共享文件夹突然不再起作用的问题是,VirtualBox Guest附加项内核模块未加载。

问题不直接连接到VirtualBox版本!过去可能是这种情况,但是以下说明涵盖了大约95%的此问题的发生。


说明

这主要是由于Linux内核的自动更新引起的,例如,在虚拟机中运行cronapt

如果内核获得新版本,则在重新引导虚拟机后无法重新启动用于来宾添加的dkms模块。 服务文件/etc/init.d/virtualbox-guest-utils检查

中是否有内核模块
/lib/modules/`uname -r`
vboxguestvboxsf

文件夹。

初始设置访客添加项时的内核版本为: 1.2.3

更新的内核具有以下版本: 1.2.4

uname -r将产生1.2.4,而dkms模块安装了内核版本1.2.3。 这将导致virtualbox guest虚拟机附加服务中止执行并失败,并显示诸如modprobe xxxx failed....之类的错误消息。

解决方案

我们需要做的是,将内核的标头与新的内核版本一起安装,以便可以使用它们自动重建用于virtualbox guest虚拟机添加的dkms模块。

幸运的是,有一个meta包,可以让我们安装最新版本的内核头文件。

在不同的Linux风格中,它的名称似乎有所不同。这是其中的一小部分。

Debian

sudo apt install linux-headers-amd64

Ubuntu

sudo apt install linux-headers-generic

CentOS(未经测试)

感谢@Jayen Chondigara

sudo yum -y install kernel-headers kernel-devel