You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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=1001,gid=1001,_netdev vagrant /vagrant
The error output from the command was:
: No such device
Expected behavior
==> default: Mounting shared folders...
default: /vagrant => C:/work/vagrant_tools/1804g
==> default: Machine already provisioned. Run vagrant provision or use the --provision
==> default: flag to force provisioning. Provisioners marked to run always will still run.
Actual behavior
VM Linux guest fails to start
Reproduction information
Provision VM as Virtual Box VM, using Ubuntu 18.04 base, while on vpn, from Windows 10 host.
Virtual Box version 7.0.12.
Ubuntu VM 18.04 base has 6.1.32r149290 guest additions installed.
Vagrant scripts are updating the guest additions from 6.1.32 to 7.0.12 at VM provisioning step.
After the failure, started vagrant ssh and manually run the command:
sudo mount -t vboxsf -o uid=1001,gid=1001,_netdev vagrant /vagrant
echo $?
0
At this point the command completes.
So this is why I believe it is a raise condition.
One possible workaround would be to tell vagrant to run a script before vagrant attempts to configure the shared folders.
Don't know how to time that it runs before the step that configures the shared folders.
The script can wait for the vboxsf to be mounted and/or retry before giving up.
Noting that I didn't see it fail outside of the vpn, so it is definitely related to network timing.
Vagrant version
Installed Version: 2.4.0
Host operating system
Windows 10
Guest operating system
Ubuntu 18.04
Steps to reproduce
vagrant up <-- Provision step
power down VM
vagrant up <-- run step (this step fails)
Vagrantfile
# Copy-paste your Vagrantfile here. Remove any sensitive information such as passwords, authentication tokens, or email addresses.# -*- mode: ruby -*-# vi: set ft=ruby :load'Vagrantfile.vb_version'load'Vagrantfile.personal'# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!VAGRANTFILE_API_VERSION="2"Vagrant.configure(VAGRANTFILE_API_VERSION)do |config|
# Set auto_update to false, don't want to check the correct additions# version when booting this machineconfig.vbguest.auto_update=false# Tell vagrant to not install virtual box additions; the additions will be# installed explicitly by the fix-guest-additions.sh script.# The fix-guest-additions.sh script is needed because the vagrant# built-in installation doesn't complete and causes failures.config.vbguest.no_install=true# Do not download the iso file from a webserverconfig.vbguest.no_remote=true# All Vagrant configuration is done here. The most common configuration# options are documented and commented below. For a complete reference,# please see the online documentation at vagrantup.com.# Every Vagrant virtual environment requires a box to build off of.config.vm.box=BOX_BASEconfig.vm.box_version=BOX_VERSION# Disable automatic box update checking. If you disable this, then# boxes will only be checked for updates when the user runs# `vagrant box outdated`.config.vm.box_check_update=falseifWINDOWS_VM == 'yes'# Additional parameters to communicate with Windowsconfig.vm.boot_timeout=60config.vm.communicator="winrm"config.winrm.port=55985end# Credit goes to @andyshinn and Nathan for identifying the fix on the Vagrant# GitHub (#1673).## The issue arises because Ubuntu's default /root/.profile contains a line that# prevents messages from being written to root's console by other users.# This "mesg n" command fails because it is expecting to be run from an# interactive terminal (a tty) and not a script.## The code below simply replaces the original line in /root/.profile with one# that checks to see if the current terminal is a tty before running the# "mesg n" command. It sets the privileged option of the shell provisioner to# false so that we don't get the error during this provisioner and uses sudo# instead to get appropriate privileges.## This provisioner is idempotent (meaning, it can be run over and over) and# has no security or stability issues.## Of course, if part of your provisioning does actually require a TTY, this# doesn't really solve the problem. The one common provisioning step that does# involve a TTY is packages that expect a configuration is the installation# of Debian packages. For this case, you should use dpkg-preconfigure to# provide the necessary information up front.## Prevents triggers of stdin: is not a tty when running scripts via# config.vm.provision "shell", path: ...ifWINDOWS_VM == 'no'config.vm.provision"fix-no-tty",type: "shell"do |s|
s.privileged=falses.inline="sudo touch /root/.profile; sudo sed -i '/tty/!s/mesg n/tty -s \\&\\& mesg n/' /root/.profile"endend# Script common.sh is sourced from the provisioning script provision-vm.sh# and few other scripts.# Make common.sh script available in VM as a workaroud for this failure:# + . /tmp/common.sh# /tmp/vagrant-shell: 28: .: Can't open /tmp/common.sh# Simply copy it to the VM guest before running the provisioning scriptifWINDOWS_VM == 'no'config.vm.provision"file", \
source: "vagrant-scripts/common.sh", \
destination: "/tmp/common.sh"config.vm.provision"shell",privileged: false, \
path: "vagrant-scripts/provision-vm.sh", \
:args=>[INSTALL_SHAKOPEE_TOOLS, \
VM_IP_ADDRESS, \
GIT_USER_NAME, \
GIT_USER_EMAIL_ADDRESS, \
INSTALL_WIND_RIVER_7, \
VIRTUAL_BOX_GUEST_ADDITIONS_VERSION, \
USER_NAME, \
SAMBA_SHARED_DIRECTORY_NAME, \
SAMBA_SHARED_DIRECTORY, \
NCIPHER_CONFIG]end# Give the name for the created machineconfig.vm.hostname=VM_HOST_NAME_WRL# Create a forwarded port mapping which allows access to a specific port# within the machine from a port on the host machine. In the example below,# accessing "localhost:8080" will access port 80 on the guest machine.# config.vm.network :forwarded_port, guest: 80, host: 8080, auto_correct: true# Create a private network, which allows host-only access to the machine# using a specific IP.# config.vm.network :private_network, auto_config: false, ip: VM_IP_ADDRESS# Create a public network, which generally matched to bridged network.# Bridged networks make the machine appear as another physical device on# your network.ifVM_IP_ADDRESS == 'dhcp'thenconfig.vm.network:public_network,bridge: BRIDGED_NETWORK_ADAPTER_NAME,auto_config: false,use_dhcp_assigned_default_route: trueelseconfig.vm.network:public_network,bridge: BRIDGED_NETWORK_ADAPTER_NAME,auto_config: false,ip: VM_IP_ADDRESSend# If true, then any SSH connections made will enable agent forwarding.# Default value: false# config.ssh.forward_agent = true# Share an additional folder to the guest VM. The first argument is# the path on the host to the actual folder. The second argument is# the path on the guest to mount the folder. And the optional third# argument is a set of non-required options.config.vm.synced_folderFile.dirname(__FILE__),"/vagrant",disabled: false# Provider-specific configuration so you can fine-tune various# backing providers for Vagrant. These expose provider-specific options.# Example for VirtualBox:#config.vm.provider:virtualboxdo |vb|
# Tell vagrant booting mode (headless mode or gui)vb.gui=USE_THE_GUI# Use VBoxManage to customize the VM.vb.customize["modifyvm",:id,"--memory",MEMORY_TO_USE]vb.customize["modifyvm",:id,"--cpus",CPUS_TO_USE]vb.customize["modifyvm",:id,"--name",VM_MACHINE_NAME_WRL]vb.customize["modifyvm",:id,"--clipboard","bidirectional"]vb.customize["modifyvm",:id,"--draganddrop","bidirectional"]vb.customize["modifyvm",:id,"--graphicscontroller",GRAPHICS_CONTROLLER]vb.customize["modifyvm",:id,"--vram",VIDEO_MEMORY]# Turn off the remote displayvb.customize["modifyvm",:id,"--vrde","off"]vb.customize["modifyvm",:id,"--accelerate3d",ACCELERATION]end# All VirtualBox VMs for vagrant should have default vagrant user definedconfig.ssh.username="..."# When starting a new VM, vagrant environment expects default credentials# vagrant/vagrant, set when Virtual Box base is created# config.ssh.username in the line above gets updated from vagrant user to the# new user as part of running adduser.sh script# After the new VM is rebooted, vagrant user is removed via runMeFirst.sh# script.end
The text was updated successfully, but these errors were encountered:
Debug output
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=1001,gid=1001,_netdev vagrant /vagrant
The error output from the command was:
: No such device
Expected behavior
==> default: Mounting shared folders...
default: /vagrant => C:/work/vagrant_tools/1804g
==> default: Machine already provisioned. Run
vagrant provision
or use the--provision
==> default: flag to force provisioning. Provisioners marked to run always will still run.
Actual behavior
VM Linux guest fails to start
Reproduction information
Provision VM as Virtual Box VM, using Ubuntu 18.04 base, while on vpn, from Windows 10 host.
Virtual Box version 7.0.12.
Ubuntu VM 18.04 base has 6.1.32r149290 guest additions installed.
Vagrant scripts are updating the guest additions from 6.1.32 to 7.0.12 at VM provisioning step.
After the failure, started vagrant ssh and manually run the command:
sudo mount -t vboxsf -o uid=1001,gid=1001,_netdev vagrant /vagrant
echo $?
0
At this point the command completes.
So this is why I believe it is a raise condition.
One possible workaround would be to tell vagrant to run a script before vagrant attempts to configure the shared folders.
Don't know how to time that it runs before the step that configures the shared folders.
The script can wait for the vboxsf to be mounted and/or retry before giving up.
Noting that I didn't see it fail outside of the vpn, so it is definitely related to network timing.
Vagrant version
Installed Version: 2.4.0
Host operating system
Windows 10
Guest operating system
Ubuntu 18.04
Steps to reproduce
Vagrantfile
The text was updated successfully, but these errors were encountered: