Vagrant 无法挂载 VirtualBox 共享文件夹

Posted

技术标签:

【中文标题】Vagrant 无法挂载 VirtualBox 共享文件夹【英文标题】:Vagrant was unable to mount VirtualBox shared folders 【发布时间】:2017-09-15 11:34:10 【问题描述】:

当前设置:Virtualbox 5.1.20Vagrant 1.9.3

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

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

。这通常是因为文件系统“vboxsf”不可用。该文件系统通过 VirtualBox Guest Additions 和内核模块提供。请确认这些来宾添加已正确安装在来宾中。这不是 Vagrant 中的错误,通常是由错误的 Vagrant box 引起的。对于上下文,尝试的命令是:

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

命令的错误输出是:

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 安装文件夹?

【问题讨论】:

如果您的主机上缓存了不支持您计算机上安装的 vbguest 插件版本的旧盒子,也会发生这种情况。 More details here 【参考方案1】:

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

将以下行添加到您的虚拟机定义中:

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

更新你的流浪虚拟机:

vagrant up --provision

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

【讨论】:

【参考方案2】:

接受对我的情况不起作用。

我的问题是: 使用命令(在主机上)安装的 Virtualhost 来宾添加(在来宾机器上):

vagrant plugin install vagrant-vbguest

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

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

vagrant vbguest --status

它将验证主机和来宾计算机上的来宾添加是否一致。 如果您收到 Guest added did not match 警告,然后 SSH 进入您的虚拟机并首先运行以下命令以在您的计算机中安装来宾添加:

sudo apt-get install virtualbox-guest-x11

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

vagrant vbguest --do install

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

vagrant reload

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

vagrant vbguest --status

References 1References 2

【讨论】:

【参考方案3】:

运行这个命令:

 vagrant vbguest --do install --no-cleanup

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

别担心,它会起作用的。

【讨论】:

【参考方案4】:

我要做的是运行以下命令将 nfs 添加到 windows

vagrant plugin install vagrant-winnfsd

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

【讨论】:

【参考方案5】:

更新

在 VirtualBox 5.1.22 中修复。

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

原答案

在我的情况下,VM 内的符号链接是错误的。 登录虚拟机:

$ 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 Extension Pack(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!

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

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

【讨论】:

作为一个仅供参考,这里是跟踪此错误修复的票virtualbox.org/ticket/16670 这似乎是一个临时修复。在vagrant reload 之后我又遇到了错误 再次发生后,我降级到 5.1.18 - 问题解决了 ;) 对于 VirtualBox 5.1.22 r115126 和 Vagrant 1.9.7 有同样的问题 我对 5.1.26 也有同样的问题【参考方案6】:

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

环境:

VirtualBox 版本 6.0.4r128413 流浪者版本 2.2.3

步骤:

从终端或命令行 (cd) 转到您的项目目录并运行以下命令:

    vagrant plugin install vagrant-vbguest 安装 Vagrant VB 访客插件

    vagrant up

如果您收到有关 vboxsf 不可用的错误消息。那么可能您的 VirtualBox Guest Additions 没有正确安装。希望下面的命令可以解决您的问题。

vagrant ssh
sudo yum -y install kernel-devel
sudo yum update -y
exit
vagrant halt
vagrant up --provision

【讨论】:

【参考方案7】:

对于那些与我几乎相同问题的人来说,以下是解决方案

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

解决方案

    vagrant ssh

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

    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 //下载文件

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

    exit

    vagrant reload

详情:问题

    vagrant up 但失败并出现类似错误,除了

命令的错误输出是:

/sbin/mount.vboxsf: 挂载失败,错误为:没有这样的设备

    进一步阅读日志,我注意到以下关键词

安装 Virtualbox Guest Additions 5.2.16 - 来宾版本为 5.1.10

安装 VirtualBox Guest Additions 时出错

此系统当前未设置为构建内核模块。

请安装与当前内核匹配的 Linux 内核“头”文件

包含头文件的包可能是:kernel-devel kernel-devel-3.10.0-327.el7.x86_64

    进一步阅读日志

将安装包 kernel-headers.x86_64 0:3.10.0-862.9.1.el7

没有可用的包 kernel-devel-3.10.0-327.el7.x86_64。

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

详情:我的环境

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

来源

How to uninstall kernel header 3.10.0-862 How to install kernel header 3.10.0-327

【讨论】:

【参考方案8】:

这对我有用...运行以下命令:

vagrant plugin repair

然后

vagrant plugin expunge --reinstall

然后

vagrant reload

【讨论】:

小心这个。它可以打破你的盒子和你的流浪安装。 这是完美的。我不知道为什么这有效,但它有效,我非常喜欢你的回答!!!!!【参考方案9】:

在 VirtualBox 5.2.6 和 Vagrant 2.0.1 中安装 vbguest 插件对我来说有效:

vagrant plugin install vagrant-vbguest

【讨论】:

感谢工作! VirtualBox 5.2.6 & Vagrant 2.0.2 现在给GuestAdditions 5.2.6 running --- OK. 这个问题是针对特定版本的 virtualbox 和 vagrant 的,并且已经说明对于这些特定版本,vagrant-vbguest 插件不起作用。 应该是最佳答案。 它适用于 virtualbox 5.2.8vagrant 2.0.2GuestAdditions 5.2.8 已安装。 这对我也有用 - 有趣的是,我已经安装了 GuestAdditions,但是在从 Vagrant v1.8 升级到 v2.0 和 VirtualBox 从 5.1 升级到 5.2 之后,我开始收到安装错误。即使在vagrant plugin update 之后。以这种方式重新安装插件为我修复了它。【参考方案10】:

对我来说,重启访客系统后的以下命令对我有帮助:

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

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

【讨论】:

【参考方案11】:

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

【讨论】:

该问题与不同版本的 Vagrant 有关,并且无法使用特定版本的 Virtualbox。 也为我解决了.. :) 请注意,删除类型:“nfs”是个坏主意,你会遇到速度问题,详细信息在这里:***.com/questions/50614748/…

以上是关于Vagrant 无法挂载 VirtualBox 共享文件夹的主要内容,如果未能解决你的问题,请参考以下文章

text Vagrant无法挂载VirtualBox共享文件夹。这通常是因为文件系统“vboxsf”不可用。这个文件系统是

Vagrant:无法让 NFS 工作

无法在Ubuntu上启动Vagrant VirtualBox

vagrant常见问题总结

vagrant virtualbox VM inaccessible解决办法

Chrome无法解析Vagrant / VirtualBox主机?