The Issue
I installed Vagrant on Windows 10 so I can create a personal local development environment in a virtual machine. Everything I've read about Vagrant said I can even spin up multiple systems and test communication between them with NAT port forwarding. But first, I just want to get one development environment virtual machine created before I go too far with the rest of it.
I installed VirtualBox, Vagrant, PuTTy, and PuTTYGen, per this SitePoint tutorial: https://www.sitepoint.com/getting-started-vagrant-windows/. Next I created a vagrant project folder on C: drive, did vagrant init
, deleted the Vagrantfile
, and finally, vagrant init ubuntu/trusty64
. Then I did vagrant up
, but the process failed with the error:
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
Here's a screenshot of my Windows command line:
And here's a text version:
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
My Setup
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
Plugins & Extensions Installed
Vagrant:
- vagrant-share (1.1.6, system)
- vagrant-vbguest (0.13.0)
What I tried already
This post seemed the most promising in my research.
Unfortunately, none of the solutions offered, nor any of the links provided solved the issue. I've tried a bunch of stuff already, but I'm not a system admin (which, I'm guessing is the skillset that you'd need to troubleshoot this). It was particularly troubling that many of the "solutions" from 2013/2014, are more recently indicated as not working any more. These solutions talk about something to do with symlinks not working, installing plugins like vagrant-vbguest, and something about vbox additions not matching something. I don't really understand all of that, but I tried my best. Here is what I tried already that hasn't solved it yet:
vagrant plugin install vagrant-vbguest
. Vagrant shows the plugin as installed, but I get the same error onvagrant up
.List of links I read in researching this issue that provided no working solution.
- 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 (This VirtualBox ticket is referenced by posters in some of the other listed links. Unfortuantely, this ticket doesn't fix the issue. It's not fixed and is still broken ... OR ... perhaps this ticket is related, but slightly differerent than the issue I and others are still experiencing).
- 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
My Questions
I suspect the issue is with VirtualBox, not Vagrant. Is this true?
How can I fix this so I can continue with the tutorial?
There seems to have been a drastic drop in Vagrant questions answered on Stack Overflow since around 2014. What is the reason for this? Is Vagrant/VirtualBox no longer considered "best practice"? Is there a better solution so users are ignoring the Vagrant questions?
Again, I'm not a system administrator, but I am technically savvy and can follow technical directions.
Downgrade to Virtual Box 5.1.14 from 5.1.16 works fine.
Summary
The problem with the synced/shared folders not working anymore all of a sudden is, that the VirtualBox Guest additions kernel module is not loaded.
The problem is not directly connected to the VirtualBox version! It may have been the case in the past, but the following explanation covers about 95% of the occurences of this problem.
Explanation
This is mainly caused by an automatic update of the linux kernel, for example by having
cronapt
running in the virtual machine.If the kernel gets a new version, the dkms module for the guest additions can not be restarted after a reboot of the virtual machine. The service file
/etc/init.d/virtualbox-guest-utils
checks if there is a kernel module infolder for
vboxguest
andvboxsf
.Let the kernel version at initial setup of the guest additions be: 1.2.3
The updated kernel has the version: 1.2.4
uname -r
would result in1.2.4
, while the dkms module was installed with the kernel version1.2.3
. This would cause the virtualbox guest addition service to abort execution and fail with an error message likemodprobe xxxx failed....
.Solution
What we need to do is, install the headers of the kernel alongside with the new kernel version, so that the dkms module for the virtualbox guest additions can be automatically rebuilt with them.
Fortunately there is a meta package, that lets us have the newest version of the kernel headers installed.
It seems to be named differently in different linux flavours. Here is a small list of them.
Debian
sudo apt install linux-headers-amd64
Ubuntu
sudo apt install linux-headers-generic
CentOS (untested)
Thx to @Jayen Chondigara
sudo yum -y install kernel-headers kernel-devel
This didn't work for me, it seems to be incompatible with vagrant 1.9.2, I uninstalled the latest version of virtual box (5.1.16) and installed version 5.1.12 with the latest version of vagrant 1.9.2 and homestead and it works for me.
This problem is solved in VirtualBox 5.1.18.
There can be multiple cause :
vagrant plugin install vagrant-vbguest
I had the same issue, and it was just the guest addition that was not up-to-date ...
UDPATE : The bug on Vagrant with NFS on Windows (point 2) has been fixed in version 5.1.18, re-appears in version 5.1.20 and is fixed again in version 5.2.