Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
open-vm-tools and VMWare Shared Folders for Ubuntu guests

(NB: adapted from this Ask Ubuntu thread -- tested to work with Ubuntu 16 LTS branches and Ubuntu 17.10)

Unlike using VMWare Tools to enable Linux guest capabilities, the open-vm-tools package doesn't auto-mount shared VMWare folders. This can be frustrating in various ways, but there's an easy fix.

TL;DR

Install open-vm-tools and run:

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

(Make sure /mnt/hgfs exists and is empty)

You can put configuration stanzas in /etc/fstab to facilitate this, and then mount /mnt/hgfs will work.

See the Setting up auto-mounting section for setting up auto-mounting instead.

Pre-work

Make sure open-vm-tools (and open-vm-tools-desktop if you're using a desktop environment) are installed, and that you've rebooted after their installation.

sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop

Make sure you have a /mnt/hgfs directory made and empty. If not:

sudo mkdir -p /mnt/hgfs

Mounting

To mount the filesystem, run:

sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

The shared folders will now be in subdirectories of /mnt/hgfs

Setting up auto-mounting

  1. Add the following line to /etc/fstab:

    .host:/	/mnt/hgfs	fuse.vmhgfs-fuse	noauto,allow_other	0	0
    

Do not use the auto keyword; vm-tools has to start completely before the mount will work

  1. Create or edit the script /etc/rc.local (as root), and add the line:

  mount /mnt/hgfs

  1. make sure rc.local is executable and owned by root:

    sudo chown root:root /etc/rc.local
    sudo chmod 0755 /etc/rc.local
    
  2. enable the rc.local service in systemd:

    sudo systemctl enable rc-local.service
    
  3. reboot

The rc.local script runs as the last step of startup, allowing the HGFS filesystem to mount after open-vm-tools services are running, which is required for successful operation.

Browse /mnt/hgfs at will.

#!/usr/bin/env bash
## this must be run as root!
## It should set up VMWare Shared folders on Ubuntu guests using open-vm-tools
rclocal="/etc/rc.local"
owner="root:root"
mountpoint="/mnt/hgfs"
## fail if we're not run as root
if [ "$EUID" != 0 ]
then
(>&2 echo "$0 must be run as root")
exit 127
fi
## set up FSTAB
mkdir -p $mountpoint
echo ".host:/ ${mountpoint} fuse.vmhgfs-fuse noauto,allow_other 0 0" >> /etc/fstab
## set up rc.local script
if ! [ -f "$rclocal" ]
then
echo '#!/bin/sh' > "$rclocal"
fi
echo "mount '$mountpoint'" >> "$rclocal"
chown $owner "$rclocal"
chmod 0755 "$rclocal"
## enable rc.local service
systemctl enable rc-local.service
systemctl start rc-local.service
## report and exit
(>&2 echo -e "set up and started $rclocal\nyou should be able to browse $mountpoint now and after reboots")
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment