Vagrant错误:无法安装VirtualBox共享文件夹(Guest Additions,vboxsf)

34

问题

我在Windows 10上安装了Vagrant,以便在虚拟机中创建个人本地开发环境。我读到的有关Vagrant的所有信息都说我甚至可以启动多个系统,并使用NAT端口转发测试它们之间的通信。但是首先,我只想创建一个开发环境的虚拟机,在进行其余操作之前。

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

Vagrant无法挂载VirtualBox共享文件夹。这通常是因为文件系统“vboxsf”不可用。此文件系统通过VirtualBox Guest Additions和内核模块提供。请验证这些Guest Additions是否已正确安装在guest中。这不是Vagrant中的错误,通常是由于有缺陷的Vagrant box引起的。针对此命令的上下文是:

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

命令的错误输出为:

: No such file or directory

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

Vagrant/VirtualBox错误截图

以下是文本版本:

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)

我已经尝试过的方法

这篇文章在我的研究中似乎是最有希望的。

不幸的是,提供的解决方案以及提供的链接都没有解决问题。我已经尝试了很多东西,但我不是系统管理员(我猜想这是需要解决问题的技能集)。特别令人不安的是,许多2013/2014年的“解决方案”最近被指示为不再起作用。这些解决方案涉及到符号链接无法工作、安装像vagrant-vbguest这样的插件,以及关于vbox添加不能匹配某些内容的问题。我并不完全理解这一切,但我尽力了。以下是我已经尝试过但仍未解决问题的内容:

  1. vagrant plugin install vagrant-vbguest。Vagrant显示插件已安装,但我在vagrant up时仍然遇到同样的错误。

  2. 我阅读的与此问题相关的链接列表,没有提供有效的解决方案。

我的问题

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

  2. 我该如何解决此问题以便能够继续进行教程?

  3. 自2014年左右以来,在Stack Overflow上回答有关Vagrant的问题数量似乎已经大幅减少。这是什么原因呢?Vagrant/VirtualBox不再被认为是“最佳实践”了吗?是否有更好的解决方案,以至于用户正在忽略Vagrant问题?

再次声明,我不是系统管理员,但我在技术方面很有经验,并且可以遵循技术指导。


嘿,Eric,你找到任何解决方案了吗?我的朋友也遇到了这个问题,我正在帮他寻找解决方案,但是我找到的所有方法都对他没用。 - Rizki Pratama
@softtama 最好且最简单的解决方案是将VirtualBox降级至5.1.14版本。此问题相关链接:https://github.com/mitchellh/vagrant/issues/8352 - Hype
11个回答

29
vagrant plugin install vagrant-vbguest

这对我没有用,它似乎与vagrant 1.9.2不兼容,我卸载了最新版本的虚拟机(5.1.16),安装了版本为5.1.12的虚拟机以及最新版本的vagrant 1.9.2和homestead,现在它对我起作用了。


2
这对我有用☺!我使用的是 Vagrant 1.9.2 和 Virtual Box 5.1.16r113841。 - Pathros
是的。 - Elon Zito
是的!非常感谢。这个方法适用于Virtual box 5.1.22和Vagrant 1.9.4。 - imapotatoe123
也适用于我:Vagrant 1.9.5和VirtualBox 5.1.22。 - wumpz

28
您可以降级VirtualBox或编辑文件中的行:
在我的设置中,这是以下文件的第206行:
C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.9.2\lib\vagrant\util\platform.rb
在我的主机上。
我已经执行了此操作,并且在Windows 10上运行良好! 我想补充一下我在第206行所做的更改:
编辑前:"\\?\" + path.gsub("/", "\")
编辑后:path.gsub("/", "\")

这是一个解决方案,直到他们在 https://github.com/mitchellh/vagrant/issues/8352 上修复它。 - Nick Doulgeridis
已更新所有内容:虚拟机、Vagrant(1.9.2)、Guest Addition 5.1.16,以上方法可行。请注意,在编辑后,您必须输入双反斜杠以转义上述行。 - TaylorR
这让我花了三天时间才弄清楚。非常感谢您的分享 - 如果它也解决了@Eric的问题,它应该被接受为正确答案! - Christian Engel
这个在我的Windows 7 x64上运行成功,使用Vagrant 1.9.2和VirtualBox 5.1.16。谢谢! - serban.b

13

客户机附加功能与VirtualBox的版本不兼容。自动更新VirtualBox客户机附加程序将解决可能相关的问题:

vagrant插件安装vagrant-vbguest

我在以下配置中遇到了这个问题:

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

3
你试过哪些流浪者盒子?对于与您相同的设置,当使用ubuntu/xenial64作为vagrant box时,我自动更新虚拟机增强功能并不能解决问题。看起来vbox客户附加组件在处理vagrant用于共享文件夹的UNC编码路径方面存在一些问题。 vbox版本5.1.14正常运行。提前致谢! - AntiTiming
2
谢谢,使用5.1.14是唯一解决我的问题的方法。 - Mr_CryptoPrime
相同的问题。从5.1.16降级到5.1.14解决了问题。感谢@Mr_CryptoPrime! - clk
好的,我会尝试降级并回报。 - Eric Hepperle - CodeSlayer2010
当我在Win-10上使用NTFS文件夹类型安装laravel(5.4)Homestead于vagrant版本1.9.7时,它对我有效。 - Yevgeniy Afanasyev
显示剩余3条评论

8
这个问题已在VirtualBox 5.1.18中解决。

当我从5.1.16升级到5.1.18时,这个问题似乎已经消失了。 - Morio
我喜欢其他人给出的详细答案,但这个答案是最简单的,并且它起作用了。不幸的是,它表明存在一个问题,直到我发布这个问题后不久才被发现。这是否意味着过去3年(至少自2014年以来)没有新手能够安装VirtualBox + Guest Additions,还是只有在Windows上的VirtualBox中存在问题? - Eric Hepperle - CodeSlayer2010
16
很不幸,当我从5.1.18升级到5.1.20时,这个问题刚刚又出现了 - Szczepan Hołyszewski
1
@SzczepanHołyszewski 我也是在5.1.24上。 - Strake
似乎在VirtualBox的v5.2.2版本中重新出现了,所以不要升级。 - mtpultz
显示剩余4条评论

8
可以有多个原因:
  1. 客户机附加组件的版本与VirtualBox版本不匹配,您可以通过运行 vagrant plugin install vagrant-vbguest 更新客户机附加组件的版本。
  2. 您遇到了Vagrant在Windows上使用NFS时的一个错误:该问题应已修复,您可以尝试更新到最新版本的Vagrant和VirtualBox。
  3. 在此github问题https://github.com/fideloper/Vaprobash/issues/92中,有两件事情可以测试:使用winnfsd插件(https://github.com/winnfsd/vagrant-winnfsd)或尝试将默认挂载配置为没有NFS。

我也遇到了相同的问题,只是客户机附加组件不是最新的......

更新:Vagrant在Windows上使用NFS的错误(第2点)已在版本5.1.18中修复,并在版本5.1.20中重新出现,在版本5.2中再次修复。


谢谢你的回答。我不知道这周是否有时间处理,但我会及时反馈并告诉你它是否有效。 - Eric Hepperle - CodeSlayer2010
尝试完全禁用vbox guest additions,然后再次启动vagrant。编辑“Vagrantfile”:1)machine.vm.synced_folder '.', '/vagrant',type:user_config.vagrant_mount_method,disabled:true 2)config.vbguest.auto_update = false 或者您可以在此处查看如何手动编译guest additions:https://dev59.com/questions/t14c5IYBdhLWcg3wFm44 - Dmitry
1
在我的情况下,我需要安装vagrant plugin install vagrant-vbguestvagrant plugin install vagrant-winnfsd两个插件。 - Chris
1
@Chris 安装了 vagrant-winffsd 也解决了我的问题! - GiamPy

4
我正在使用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


3

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


2

谢谢Jayflux!那么,VirtualBox到底出了什么问题,以至于它不能始终制作一个良好的产品呢?这有点令人沮丧,因为我已经在不同版本的虚拟机上追踪这个问题超过4年了。 - Eric Hepperle - CodeSlayer2010

2

这是Vbox中的一个bug,但有解决方案。

登录到Vbox guestos:默认密码为(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:

vagrant up

它会起作用。


1
我有类似的问题,检查标题如果不匹配,则运行以下命令。
CentOS:sudo yum update && sudo yum -y install kernel-headers kernel-devel
vagrant reload
对我有用。

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