Vagrant 错误:无法挂载 VirtualBox 共享文件夹(Guest Additions,vboxsf)
Posted
技术标签:
【中文标题】Vagrant 错误:无法挂载 VirtualBox 共享文件夹(Guest Additions,vboxsf)【英文标题】:Vagrant Error: Unable to Mount VirtualBox Shared Folders (Guest Additions, vboxsf) 【发布时间】:2017-06-23 18:37:42 【问题描述】:问题
我在 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 命令行的屏幕截图:
这是一个文本版本:
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 添加不匹配的东西有关的事情。我不是很了解所有这些,但我已尽力而为。这是我已经尝试过但尚未解决的问题:
vagrant plugin install vagrant-vbguest
。 Vagrant 显示插件已安装,但我在 vagrant up
上遇到同样的错误。
我在研究此问题时阅读的链接列表,但没有提供有效的解决方案。
Vagrant unable to mount in Linux guest with VirtualBox Guest Additions on Windows 7 Vagrant - How can I mount the virtualbox shared folder? ("vboxsf" not available) https://github.com/mitchellh/vagrant/issues/3341#issuecomment-144271026 https://www.virtualbox.org/ticket/12879 (这张 VirtualBox 票证在其他一些列出的链接中被海报引用。不幸的是,这张票证并不能解决问题。它没有修复并且仍然损坏......或者......也许这张票证是相关的,但与我和其他人仍然遇到的问题略有不同)。 https://gist.github.com/fernandoaleman/5083680 VAGRANT SHARED FOLDERS DO NOT MOUNT - Windows 7 - Vagrant 1.7.4 - Ubuntu 12.04 precise64 - VirtualBox 5.0.10 with Guest Additions我的问题
我怀疑问题出在 VirtualBox,而不是 Vagrant。这是真的吗?
如何解决此问题以便继续学习本教程?
自 2014 年左右以来,Stack Overflow 上回答的 Vagrant 问题似乎急剧下降。这是什么原因? Vagrant/VirtualBox 是否不再被视为“最佳实践”?有没有更好的解决方案让用户忽略 Vagrant 的问题?
再次重申,我不是系统管理员,但我精通技术,可以遵循技术指导。
【问题讨论】:
嘿埃里克,你找到任何解决方案了吗?我的朋友也遇到了这个问题,我正在帮助他找到解决方案,但我发现的方法对他没有任何帮助。 @softtama 最好和最简单的解决方案是将 virtualbox 降级到 5.1.14。与问题github.com/mitchellh/vagrant/issues/8352 相关 【参考方案1】:可能有多种原因:
-
guest添加的版本与VirtualBox的版本不匹配,为此您可以通过运行
vagrant plugin install vagrant-vbguest
来更新guest添加的版本
您在 Windows 上使用 NFS 遇到了 vagrant 错误:应该已修复,因此可能尝试更新到最新版本的 Vagrant 和 VirtualBox
在这个 github 问题 https://github.com/fideloper/Vaprobash/issues/92 中,您可以测试两件事:使用 winnfsd 插件 (https://github.com/winnfsd/vagrant-winnfsd) 或尝试配置没有 NFS 的默认挂载
我遇到了同样的问题,只是添加的客人不是最新的......
UDPATE:Vagrant with NFS on Windows(第 2 点)的错误已在 5.1.18 版中修复,在 5.1.20 版中重新出现,并在 5.2 版中再次修复。
【讨论】:
感谢您的回答。我不知道我这周能不能完成,但我会回来报告并让你知道它是否有效。 尝试完全禁用 vbox 来宾添加并再次启动 vagrant。编辑 "Vagrantfile": 1) machine.vm.synced_folder '.', '/vagrant', type: user_config.vagrant_mount_method, disabled: true 2) config.vbguest.auto_update = false 或者在这里你可以看到如何手动编译来宾添加:***.com/questions/28328775/… 就我而言,我需要vagrant plugin install vagrant-vbguest
和vagrant plugin install vagrant-winnfsd
@Chris 安装 vagrant-winffsd
也解决了我的问题!【参考方案2】:
Guest Additions 与 VirtualBox 的版本不兼容。自动更新 VirtualBox Guest Additions 将解决可能相关的问题:
vagrant 插件安装 vagrant-vbguest
我在使用这些堆栈时遇到了这个问题:
Windows 10 Oracle VirtualBox 5.1.16 流浪者 1.9.2 config.vm.box = "hashicorp/precise64"【讨论】:
你尝试过哪些vagrant box?使用与您相同的设置,对我来说,在使用 ubuntu/xenial64 作为 vagrant box 时,自动更新虚拟机来宾添加并不能解决问题。似乎 vbox 来宾添加在 UNC 编码路径 vagrant 用于共享文件夹方面存在一些问题。 vbox 5.1.14 版工作正常。提前致谢! 感谢您的回复@JosephStar。在发布我的问题之前,我已经完成了该更新,但无济于事。我的情况与@lootr 所描述的类似,除了我在Ubuntu Server 14 LTS
中的某些内容。仍在等待一个好的解决方案......很惊讶没有其他人报告这个问题......
谢谢,使用 5.1.14 是为我解决问题的唯一方法。
同样的问题。从 5.1.16 降级到 5.1.14 固定的东西。谢谢@Mr_CryptoPrime!
@EricHepperle-CodeSlayer2010 现在在 github github.com/mitchellh/vagrant/issues/8352 上有一个 vagrant 问题。【参考方案3】:
您可以降级VirtualBox或编辑文件中的行:
在我的设置中,这是第 206 行:
C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.9.2\lib\vagrant\util\platform.rb
在我的主机上。
我这样做了,它在 Windows 10 上运行良好!我想添加我对第 206 行所做的操作:
编辑前:"\\?\" + path.gsub("/", "\")
编辑后:path.gsub("/", "\")
【讨论】:
这是一个解决方案,直到他们在那里修复它github.com/mitchellh/vagrant/issues/8352 更新了所有内容:virtual box、vagrant (1.9.2)、Guest Addition 5.1.16,上述方法有效。请注意,您必须在编辑后添加双反斜杠以转义上述行。 这花了我三天时间才弄明白。非常感谢分享这个 - 它应该被接受为正确的答案(如果它也解决了@Eric 的问题)! 这在 Windows 7 x64 中对我有用,使用 vagrant 1.9.2,virtualbox 5.1.16。!谢谢!【参考方案4】:vagrant plugin install vagrant-vbguest
这对我不起作用,它似乎与vagrant 1.9.2不兼容,我卸载了最新版本的virtual box(5.1.16)并安装了最新版本的vagrant 1.9.2版本的5.1.12和宅基地,它对我有用。
【讨论】:
这对我有用☺!我有 Vagrant 1.9.2 和 Virtual Box 5.1.16r113841 yeeeeeeeeeeeeeeeeeeeeeesssss。 是的!太感谢了。这适用于 Virtual box 5.1.22 和 Vagrant 1.9.4 也为我工作:Vagrant 1.9.5 和 VirtualBox 5.1.22。【参考方案5】:从 5.1.16 降级到 Virtual Box 5.1.14 可以正常工作。
【讨论】:
【参考方案6】:VirtualBox 5.1.18 解决了这个问题。
【讨论】:
当我从 5.1.16 升级到 5.1.18 时,这个问题似乎消失了。 我喜欢其他人给出的详细答案,但是,这个答案是最简单的并且有效。不幸的是,这表明存在一个问题,直到我发布此问题后不久才为人所知。这是否意味着由于这个问题,过去 3 年(至少从 2014 年起)没有新手能够安装 VirtualBox + Guest Additions,还是只是 Windows 上的 VirtualBox 上的问题? 不幸的是,当我从 5.1.18 升级到 5.1.20 时,这个问题刚刚再次出现 @SzczepanHołyszewski 同样在 5.1.24 对我来说,它也再次出现在 5.1.20 中 - 但现在有 VirtualBox 5.2.0 出来了!升级再次为我修复了它。 Eric Hepperle - CodeSlayer2010 - 如果您需要使用 Windows 和 Linux 进行工作的多机设置的完整示例,请查看本文的第一部分 blog.codecentric.de/en/2017/09/…(段落“用于 Docker 的多机 Windows 和 Linux 混合操作系统 Vagrant 设置群”)。【参考方案7】:我正在使用 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
【讨论】:
【参考方案8】:Virtualbox 5.1.20 也有回归
流浪问题: https://github.com/mitchellh/vagrant/issues/8502
虚拟机问题: https://www.virtualbox.org/ticket/16670#comment:4
目前的解决方法是将角色恢复到它工作的 Virtualbox 5.1.18。
【讨论】:
感谢 Jayflux!那么,WTF 对 VirtualBox 的错误在于它不能始终如一地制造出能够正常工作的好产品?这有点令人沮丧,因为 4 年多来我一直在关注这个问题,在不同的盒子迭代上。【参考方案9】:我有类似的问题,检查标题是否不匹配然后运行下面的命令
CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel
流浪者重新加载
它对我有用。
【讨论】:
【参考方案10】:这是 Vbox 中的错误。有解决办法。
登录 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 提示符下运行 cmd:
vagrant up
它会起作用的。
【讨论】:
【参考方案11】:总结
同步/共享文件夹突然不再工作的问题是,VirtualBox Guest 添加内核模块没有加载。
问题不是直接连接VirtualBox版本!过去可能是这样,但下面的解释涵盖了该问题发生的大约 95%。
说明
这主要是由 linux 内核的自动更新引起的,例如在虚拟机中运行cronapt
。
如果内核获得了新版本,则在重新启动虚拟机后无法重新启动来宾添加的 dkms 模块。
服务文件/etc/init.d/virtualbox-guest-utils
检查是否有内核模块在
/lib/modules/`uname -r`
vboxguest
和 vboxsf
的文件夹。
让客户添加初始设置时的内核版本为:1.2.3
更新的内核版本为:1.2.4
uname -r
将导致1.2.4
,而 dkms 模块安装在内核版本1.2.3
中。
这将导致 virtualbox 来宾添加服务中止执行并失败并显示类似 modprobe xxxx failed....
的错误消息。
解决方案
我们需要做的是,将内核的头文件与新的内核版本一起安装,以便可以使用它们自动重建用于添加 virtualbox guest 的 dkms 模块。
幸运的是,有一个元包,可以让我们安装最新版本的内核头文件。
在不同的 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
【讨论】:
优秀的解释和正确的解决方案IMO!以上是关于Vagrant 错误:无法挂载 VirtualBox 共享文件夹(Guest Additions,vboxsf)的主要内容,如果未能解决你的问题,请参考以下文章
text Vagrant无法挂载VirtualBox共享文件夹。这通常是因为文件系统“vboxsf”不可用。这个文件系统是
Vagrant挂载目录失败mount: unknown filesystem type ‘vboxsf’