Unmounting NFS Shares on Shutdown in OpenRC Manjaro
(Above: A clipart image of a server. Source)
Since I've been using Manjaro with OpenRC when I'm out and about, I've been steadily fixing little issues and niggles I've been encountering one by one (such as finding the option to let you move the windows on the taskbar panel around yourself).
One of the first issues I encountered was that OpenRC would generously take the network down before my NFS (network file system) shares have been unmounted. This results in lengthly delays when shutting down as each of the components of the NFS mounting system have to be waited upon by OpenRC and finally killed after taking too long to shut down.
Initially I attempted to investigate reordering the shutdown process, but that quickly grew out of hand as I was investigating, and I discovered that it was not a particularly practical or, indeed, stable solution to my particular problem. Next, I found autofs which looked like it would solve the problem by automatically mounting and unmounting my NFS shares as and when they are needed, but despite assisance from someone far more experienced in the Manjaro world than I (thank you!) couldn't get it to work reliably. In addition, it started exhibiting some odd behaviour like hiding all my other mounts in my
/media folder, so I went on the hunt for better solution.
Quite by chance (all thanks to Duck Duck Go Instant Answers!) I stumbled upon NetworkManager dispatcher scripts. NetworkManager is the service / application that manages, surprisingly, the network connections on several major linux distributions - including Ubuntu (which I've used before), and, crucially, Manjaro. Although the answer said that the functionality I wanted had been removed, upon looking into the amtter it appeared to be an artifact of the way systemd shutdown the system, and so I gave it a whirl anyway just to see if it would work.
Thankfully it did end up working! To that end, I thought I'd (re)post the solution I found here for future reference, and in case it helps anyone else :-)
Assuming you already have your shares set up and working in your
/etc/fstab, you can create a file in the folder
/etc/NetworkManager/dispatcher.d/pre-down.d with the contents something like this:
#!/bin/sh logger "Unmounting NFS shares gracefully before the network goes down..."; umount /media/bob/rocket-diagrams-nas; umount /media/sean/satellite-schematics; logger "Unmounted NFS shares successfully.";
Once done, you'll need to make it executable with a quick
sudo chmod +x, and try rebooting to test it!
In theory, this could be used to do other things that need to be done before the network is taken down, like making a sekret tracking request to your web server for anti-theft purposes, or uploading a backup of your laptop's
/etc directory automagically in case it comes to a sticky end.