Note – this fix in principle should work on most systemd distributions.
Problem – trying to get a Debian 9 system to mount an NFS share at boot. This was declared in /etc/fstab
in the normal way, but kept failing on boot. However, once the system was up you could log in and do a mount -a
, which would work fine. Reading around, it looks like a case of the system trying to mount before the network is up (and in this case the network should be reliable, as it’s an internal one between a VM and it’s host…)
Tried using the bg
option first, which should mount in the background and come up eventually, but still got error on boot.
192.168.45.1:/export /hostshare nfs bg,rw,soft 0 0
There is another option that in theory should help: _netdev
. I haven’t tried this yet.
What does work is adding an option x-systemd.automount
. This, unsurprisingly, tells systemd to try and mount the share on demand. So changing the line in fstab to read:
192.168.45.1:/export /hostshare nfs rw,soft,x-systemd.automount 0 0
works. Booting the system gives no errors (on the console anyway). The share does not show as mounted until the local mountpoint is accessed, and then it works without complaint.
Footnotes
- The context for this is a VM running under VirtualBox. The VM is Debian 9, the host is Ubuntu 17.10. The VM has one network interface with the default NAT setup to talk to the outside world, and a second interface to talk to a host-only network. This allows you to SSH into the the guest from the host, and also allows this NFS setup. You can use the VirtualBox shared folder setup to transfer files, but I figured as both the host and guest were Linux NFS would be easier (and not require the Guest Extensions to be installed on the guest).
- Debian 9 wouldn’t successfully install on the laptop, but I needed it for an easy install of LALSuite (Debian is a reference system for this, Ubuntu isn’t and has dependency issues). Hence this rather complicated setup. Fortunately LALSuite is entirely command line based…
- Yes, Docker or similar would be more efficient. I’m not so familiar with it and it’s a bit of a pain to get it talking to the host filesystem. I’d argue that running a full VM is slightly more portable, although you’d need to change how the filesharing is set up on a Windows or Mac host.