-
-
Save neilbartley/73f2eb334f04bf95a906 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# This script will mount /Users in the boot2docker VM using NFS (instead of the | |
# default vboxsf). It's probably not a good idea to run it while there are | |
# Docker containers running in boot2docker. | |
# | |
# Usage: sudo ./boot2docker-use-nfs.sh | |
# | |
if [ "$USER" != "root" ] | |
then | |
echo "This script must be run with sudo: sudo ${0}" | |
exit -1 | |
fi | |
# Run command as non root http://stackoverflow.com/a/10220200/96855 | |
B2D_IP=$(sudo -u ${SUDO_USER} boot2docker ip &> /dev/null) | |
if [ "$?" != "0" ] | |
then | |
sudo -u ${SUDO_USER} boot2docker up | |
$(sudo -u ${SUDO_USER} boot2docker shellinit) | |
B2D_IP=$(sudo -u ${SUDO_USER} boot2docker ip &> /dev/null) | |
#echo "You need to start boot2docker first: boot2docker up && \$(boot2docker shellinit) " | |
#exit -1 | |
fi | |
OSX_IP=$(ifconfig en0 | grep --word-regexp inet | awk '{print $2}') | |
MAP_USER=${SUDO_USER} | |
MAP_GROUP=$(sudo -u ${SUDO_USER} id -n -g) | |
# Backup exports file | |
$(cp -n /etc/exports /etc/exports.bak) && \ | |
echo "Backed up /etc/exports to /etc/exports.bak" | |
# Delete previously generated line if it exists | |
grep -v '^/Users ' /etc/exports > /etc/exports | |
# We are using the OS X IP because the b2d VM is behind NAT | |
echo "/Users -mapall=${MAP_USER}:${MAP_GROUP} ${OSX_IP}" \ | |
>> /etc/exports | |
# https://gist.github.com/sirkkalap/40261ed82386ad8a6409 | |
# This option controls whether MOUNT requests are required to originate from a reserved port | |
# (port < 1024). The default value is 1 (yes). Many NFS server implementations require this | |
# because of the false belief that this requirement increases security. | |
echo "nfs.server.mount.require_resv_port = 0" >> /etc/nfs.conf | |
nfsd restart | |
sudo -u ${SUDO_USER} boot2docker ssh << EOF | |
echo "Unmounting /Users" | |
sudo umount /Users 2> /dev/null | |
echo "Restarting nfs-client" | |
sudo /usr/local/etc/init.d/nfs-client restart 2> /dev/null | |
echo "Waiting 10s for nfsd and nfs-client to restart." | |
sleep 10 | |
echo "Mounting /Users" | |
sudo mount $OSX_IP:/Users /Users -o rw,async,noatime,rsize=32768,wsize=32768,proto=tcp,nfsvers=3 | |
echo "Mounted /Users:" | |
ls -al /Users | |
exit | |
EOF |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment