How to mount a VirtualBox shared folder at startup?
To always mount a Virtual Box "shared folder" on booting an Ubuntu guest we have two options. It is up to personal preference which option works best in our setting.
1. Mount with fstab
To mount a shared folder using the vboxsf
filesystem provided with Guest Additions we first need to make sure prerequisites are met. Then we may put the following line in our etc/fstab
file:
<name_of_share> /path/to/mountpoint vboxsf <options> 0 0
Replace name_of_share
and /path/to/mountpoint
with your individual setup (the directory for the mountpoint has to be created first). See the manpage for mount <options>
. One possibility is to mount with defaults
, or to give specific mount options (e.g. rw, suid, exec, auto, users
).
On some systems the vboxsf
kernel module is not yet loaded at the time fstab
is read on boot. It may then help to append the vboxsf
kernel module to /etc/modules
.
Some systems may need option comment=systemd.automount
in their fstab entry (source).
2. Mount with Virtual Box "automatic mounting":
In recent releases of Virtual Box we can also automatically mount shared folders on creation:
After a reboot of the guest this shared folder will be mounted to the guest directory /media/<username>/sf_<name_of_share>
accessible to all users who had been made member of the group vboxsf
.
Edit
/etc/rc.local
sudo -H gedit /etc/rc.local
Before
exit 0
type:mount.vboxsf windows_share /media/windows_share vboxsf
Save
(Optional) Create a shortcut to the desktop or home folder:
ln -s /media/windows_share /home/freddy/Desktop
In order to boot without errors like pressing S to skip mount or press M to manually repair you may have to delete your entry in fstab
For newer systemd based systems you need alternative approaches - the simplest being one mentioned in another answer to another question - which basically says that you need to add a special comment
option to the /etc/fstab
entry:
src /my_mount/src_host vboxsf auto,rw,comment=systemd.automount 0 0
However for the above to work on some systems you need to check the 'Auto-mount' box in VirtualBox's Shared Folders->Add dialogue, which means you can end up with a few duplicate mounts of the directory.
For a cleaner mount - without duplicate directories nor the need for 'Auto-mount' - you need to use systemd's mount and automount directives. To do so create two entries in /usr/lib/systemd/system/
named after your desired mount point e.g. to match the fstab mount point above they would be named my_mount-src_host.mount
and contain:
[Unit]
Description=VirtualBox shared "src" folder
[Mount]
What=src
Where=/my_mount/src_host
Type=vboxsf
Options=defaults,noauto,uid=1000,gid=1000
and my_mount-src_host.automount
:
[Unit]
Description=Auto mount shared "src" folder
[Automount]
Where=/my_mount/src_host
DirectoryMode=0775
[Install]
WantedBy=multi-user.target
Then they need enabling:
sudo systemctl enable my_mount-src_host.automount
sudo systemctl enable my_mount-src_host.mount
They will now mount on boot. If you want mount them immediately (provided the Shared Folders have been created) you can do so:
sudo systemctl start my_mount-src_host.mount
Note if you have directories with odd names or dashes (-) in them then use systemd-escape
to find the appropriately escaped name.