Skip to content

Instantly share code, notes, and snippets.

@L422Y
Last active February 21, 2025 07:15
Show Gist options
  • Save L422Y/8697518 to your computer and use it in GitHub Desktop.
Save L422Y/8697518 to your computer and use it in GitHub Desktop.
Automounting NFS share in OS X into /Volumes

I have spent quite a bit of time figuring out automounts of NFS shares in OS X...

Somewhere along the line, Apple decided allowing mounts directly into /Volumes should not be possible:

/etc/auto_master (see last line):

#
# Automounter master map
#
+auto_master		# Use directory service
/net			-hosts		-nobrowse,hidefromfinder,nosuid
/home			auto_home	-nobrowse,hidefromfinder
/Network/Servers	-fstab
/-			-static
/-			auto_nfs	-nobrowse,nosuid

/etc/auto_nfs (this is all one line):

/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share

Make sure you:

sudo chmod 644 /etc/auto_nfs

Otherwise the automounter will not be able to read the config and fail with a ... parse_entry: getmapent for map failed... error in /var/log/messages

This will not work (anymore!) though it "should".

$ sudo automount -cv
...
automount: /Volumes/my_mount: mountpoint unavailable

Note that, if you manually create the mount point using mkdir, it will mount. But, upon restart, OS X removes the mount point, and automounting will fail.

What's the solution?

It's so easy my jaw dropped when I figured it out. Basically, we trick OS X into thinking we're mounting somewhere else.

When you're talking about paths in just about any environment, the root folder is the highest path you can reach, whether it's C:\ (windows) or / (*nix)

When you're at this path, attempting to reach the parent path, via .. will keep you at the root path.

For example: /../../../../ is still just /

By now, a few of you have already figured it out.

TL;DR / Solution:

Change your /etc/auto_nfs config from (this is all one line):

/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share

For pre-Catalina: To (this is all one line)

/../Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share

For Catalina and up: To (this is all one line)

/System/Volumes/Data/../Data/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share

And re-run the automounter:

$ sudo automount -cv
...
automount: /Volumes/my_mount: mounted

..... there you go! Technically /../Volumes is still /Volumes, but the automounter does not see things that way ;)

This configuration persists the mount across restarts, and creates the mountpoint automatically.

I KNOW, RIGHT?

Feel free to send me large checks and/or high five the screen. [email protected]

@albertovm
Copy link

albertovm commented Sep 27, 2023

Do you still using NFS with Monterey? It was working fine to me until latest 12.7 update. Regards.

It was working fine with:

/etc/auto_master:
#
# Automounter master map
#
+auto_master        # Use directory service
#/net           -hosts      -nobrowse,hidefromfinder,nosuid
/home           auto_home   -nobrowse,hidefromfinder
/Network/Servers    -fstab
/-          -static
/Users/Share        auto_nfs
/etc/auto_nfs:
mntp    -noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc server:/share

@L422Y
Copy link
Author

L422Y commented Sep 27, 2023

Honestly I haven't used NFS in probably five or six years :)

@homonto
Copy link

homonto commented Oct 18, 2023

for the latest OS - Sonoma - the command in /etc/auto_nfs that works for me is:
/System/Volumes/Data/../Data/Volumes/truenasnfs -fstype=nfs,noowners,nolockd,hard,bg,intr,rw,tcp,nfc,resvport nfs://192.168.100.4:/mnt/pool/truenasnfs

without "resvport" it was:
ls: /Volumes/truenasnfs: Operation not permitted

@L422Y
Copy link
Author

L422Y commented Oct 23, 2023

without "resvport" it was:

Interesting, I wonder if it's (inadvertently?) using the privileged access it needs for the privileged port (resvport) to access the filesystem as well

@albertovm
Copy link

for the latest OS - Sonoma - the command in /etc/auto_nfs that works for me is: /System/Volumes/Data/../Data/Volumes/truenasnfs -fstype=nfs,noowners,nolockd,hard,bg,intr,rw,tcp,nfc,resvport nfs://192.168.100.4:/mnt/pool/truenasnfs

without "resvport" it was: ls: /Volumes/truenasnfs: Operation not permitted

Unfortunately... not working for MacOS 12.7. Not yet.
/System/Volumes/Data/Users/Share/SSD -fstype=nfs,noowners,nolockd,hard,bg,intr,rw,tcp,nfc,resvport nfs://iomega-nas.local:/SSD

This works:
sudo mount -o resvport,soft,intr,rsize=8192,wsize=8192 iomega-nas.local:/SSD /Users/Share/SSD

@RJVB
Copy link

RJVB commented Oct 24, 2023 via email

@tarocjsu
Copy link

tarocjsu commented Oct 2, 2024

My "struggle" with getting MacOS Catalina NAS NFS shares was quite simple, once I got the right information. Configuration files.

/etc/auto_master:

#
# Automounter master map
#
# Literal mount point for filesystems described in "auto_resources"
#
/System/Volumes/Data/Volumes auto_resources
+auto_master		# Use directory service
    ... the rest is just boiler plate...

/etc/auto resources:

share1 -fstype=nfs,resvport,locallocks,soft,intr,rw,rsize=16384,wsize=16384,fnc 192.168.10.12:/mnt/share1
share2 -fstype=nfs,resvport,locallocks,soft,intr,rw,rsize=16384,wsize=16384,fnc 192.168.10.12:/mnt/share2

Afterwards: sudo automount -vc

One point: Make sure you can manually mount your NFS shares, and have proper access to the mounted filesystem before configuring automount.

This information work for my iMac 27" O.S.

uname -a

Darwin iMAC27 21.6.0 Darwin Kernel Version 21.6.0: Mon Jun 24 00:56:10 PDT 2024; root:xnu-8020.240.18.709.2~1/RELEASE_X86_64 x86_64

@tb-Ajaygandikota
Copy link

tb-Ajaygandikota commented Nov 29, 2024

a simple way -->

  1. add your nfs string from sudo vifs
    192.**.**.**:/mnt/nfs_share /mnt/nfs_share nfs resvport 0 0
  2. sudo mkdir -p /mnt/nfs_share
  3. sudo mount -a
  4. check from mount | grep /mnt/nfs_share
  5. reboot
  6. recheck mount | grep /mnt/nfs_share
    Hope this helps

@DS256
Copy link

DS256 commented Feb 3, 2025

Thanks for this and the comments. I had to set up my MACos 15 to access a Linux box.

The issue I found was that I could not find /Volumes/my_mnt to add to the sidebar. I ended up creating the mount point off my Home directory.

    # auto_nfs - Mount NFS Shares
    #
    # Ref's
    # https://gist.github.com/L422Y/8697518
    # https://www.ninjaone.com/blog/network-file-system-nfs/
    # https://linux.die.net/man/5/nfs
    
    # To test $sudo automount -cv
    
    /Users/paul1/../paul1/NFS/pi_lib -fstype=nfs,noasync,noresvport,rw,tcp,nfc,soft   ambrotype.local:/srv/pi_lib

Using this approach, I was able to pull 'pi_lib' into 'Locations'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment