Vagrant错误:无法在Linux客户机中挂载文件夹

4
我遇到了一个 Vagrant 错误。日志如下:
vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> 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 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> 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: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => /Users/diguage/box/centos
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

我谷歌了一下,StackOverflow上有相同的问题:

Vagrant错误:在Linux guest中无法挂载文件夹

我按照置顶答案做了:这里。不同之处在于我下载了VBoxGuestAdditions_4.3.18.iso。但是没有起作用。

我尝试了第二个答案:这里。也没有起作用。

所以,我不得不问这个问题。

我的环境是:

  • Mac OSX 10.10
  • vagrant 1.6.3
  • CentOS release 6.5 (Final)
  • Kernel 2.6.32-431.29.2.el6.x86_64
  • VirtualBox 4.3.18

PS:

我使用了名为chef/centos-6.5的盒子。我首先启动了这个盒子,一切正常。但是当我执行了sudo yum updatesudo yum clean,重启盒子后出现了错误。


我发现如果你更新CentOS 6.5,你需要重新安装客户附加组件来确认你所看到的。 - KCD
3个回答

6
以下方法对我来说是有效的。
vagrant plugin install vagrant-vbguest

2
我遇到了与相同设置相同的问题,我注意到问题仅出现在centos 6.5上,所以我使用chef/centos-6.6,并且它一直工作得很好。6.5和6.6之间几乎没有区别,因此您不应该在迁移代码时遇到任何问题。这是指向chef boxes的链接:link
编辑:
好的,最终我还需要一个6.5的box,所以我解决了这个问题。核心问题是CentOS基础存储库不包含内核头文件(Ubuntu包含)。您首先需要将适当的存储库添加到/etc/yum.repos.d/CentOS-Vault.repo中,并启用它们。您附加的内容应该类似于以下内容:
[C6.5-centosplus]
name=CentOS-6.5 - CentOSPlus
baseurl=http://vault.centos.org/6.5/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1

你还需要检查 /etc/yum.conf 文件,确保没有任何排除项,例如:
exclude=kernel*

如果是这样,请暂时注释掉它,但一定要在最后取消注释。

现在,您可以安装内核所需的头文件。头文件依赖于kernel-devel,因此让我们先获取它。

yum install kernel-devel-$(uname -r)

然后,获取头部信息。
yum install kernel-headers-$(uname -r)

最后,您需要安装dkms软件包。
yum install dkms

回到yum.conf文件中,取消注释排除项,然后重新启动即可。只安装了这个之后,你可以使用以下命令:

vagrant package --base MyBase

这将为您提供一个可重复使用的CentOS 6.5盒子,您可以随时获取。希望这对您来说不会太晚。

我的公司服务器使用的是CentOS版本。因此,我的测试环境应该使用相同的操作系统。 - diguage
谢谢你的回答。我尝试了CentOS-6.6,问题得到了解决。 - benjifisher

0

我在使用Vagrant 1.8.1,VirtualBox 5.0.18,Chef 12.10.10主机MacOSX El Capitan和客户端CentOS7时遇到了这个问题。

我尝试在客户端内安装kernel-devel,安装最新的GuestAdditions并运行yum update,但这些都没有起作用,所以我改变了“nfs”在我的自定义同步文件夹和chef临时文件夹中的挂载类型,然后它就可以工作了!

在Vagrantfile中,我的同步文件夹:

config.vm.synced_folder ".", "/vagrant", type: "nfs"

我的 chef_solo 配置:

chef.cookbooks_path = ["chef/cookbooks/"]
chef.synced_folder_type = "nfs"

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