Quick summary: the current Linux startup machinery Runs All The Things! in parallel, leaving you to figure out all the interdependencies and update all the script files to match your requirements. Mostly, the distro maintainers figure all that, but if you have essential files mounted as NFS shares, then you can will reach a login screen before the mount process completes.
Having wrestled with this problem for a while, I think I’ve doped out the right way to coerce the Upstart Pachinko Machine to converge on a workable login.
The solution is to fire off a unique signal after the NFS mount command, then force the display manager to wait until it receives that signal, rather than depend on happenstance as I did before. The mounts occur in /etc/init/local.conf
, which now looks like this:
description "Stuff that should be in /etc/rc.local" author "Ed Nisley - KE4ZNU" start on (local-filesystems and net-device-up IFACE=em1) stop on shutdown emits nfs-mounted script logger Starting local init... logger Mounting NFS filesystems mount /mnt/bulkdata mount /mnt/userfiles mount /mnt/diskimages mount /mnt/music initctl emit nfs-mounted logger Ending local init end script
The start
condition ensures that this code won’t run until the wired LAN is up; note that what was once eth0
is now em1
. Then, after the mounts happen, initctl
fires the nfs-mounted
signal.
The modification to /etc/init/lightdm.conf
script consists of one additional line to wait for that signal:
start on ((filesystem and runlevel [!06] and started dbus and plymouth-ready and nfs-mounted) or runlevel PREVLEVEL=S) stop on runlevel [016] emits login-session-start emits desktop-session-start emits desktop-shutdown
I’m not convinced lightdm.conf
is the right spot to jam a stick in the gears, but it seems to be the least-awful alternative. The login-session-start
signal doesn’t appear in any file in that subdirectory and I have no idea where else to look.
Anyhow, the greeter screen now shows a desktop background from the NFS mount, which I regard as A Good Sign:

Until the next startup revision, anyway…