That comment suggested a different solution to the problem of having the display manager start before the NFS mounts complete. When that happens, you can sign in and start programs that won’t have access to their data, producing all manner of heartache and confusion.
One complication: it seems /etc/rc.local
starts and runs before the network (among other tidbits) gets connected and becomes ready, which means you can’t just plunk your code in that file like you used to, at least not in Ubuntu. Fixing that requires an upstart
script triggered when the network interface finally hauls itself to its feet.
There’s no actual link between the NFS mount commands and the display manager startup, but it seems that if you don’t attempt to mount the NFS shares before the network becomes active (which is what happen with shares automounted through /etc/fstab
), but wait for the network to come up and then issue the mounts, the shares mount almost instantly and become ready by the time the display manager presents the login screen. That’s better than the kludge I had figured out and works fine, so I’ll run with it until something else breaks.
The not-quite-deterministic fix has three parts:
- Use
noauto
in thefstab
entries for the NFS shares - Create an
upstart
script to mount those shares aftereth0
lights up - Allow
lightdm
to start up normally (i.e., remove my hackish attempts)
A sample line from fstab
, with the vital noauto
option:
oyster:/mnt/bulkdata /mnt/bulkdata nfs noauto,noatime 0 0
The /etc/init/local.conf
script assumes the network interface will be eth0
, which does not generalize to wireless networks on laptops and suchlike. You could add some Boolean logic to wait for the first of several interfaces, I suppose:
description "Stuff that should be in /etc/rc.local" author "Ed Nisley - KE4ZNU" start on (local-filesystems and net-device-up IFACE=eth0) stop on shutdown script logger Starting local init... logger Mounting NFS filesystems mount /mnt/bulkdata mount /mnt/userfiles mount /mnt/diskimages mount /mnt/music logger Ending local init end script
The lightdm.conf
file reverts to the distribution version, with this starting trigger:
start on ((filesystem and runlevel [!06] and started dbus and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udev-fallback-graphics)) or runlevel PREVLEVEL=S)
It’s worth noting that the upstart
interpreter hates comment lines embedded within statements: it does not regard them as whitespace and does not ignore them. Just don’t do it. That explains some of the problems I encountered before, but fixing those problems did not eliminate the overall issue.
The end result of all that hocus-pocus makes the box boot the way it used to: the display manager comes up promptly, presents the GUI login screen, and the NFS mounts are ready when you are.
Heh, when I saw “ready when you are” as a link, I fully expected it to point to Betty Crocker ready-to-spread frosting, another brand that used that phrase.
Looks like Delta got there first and kept using it. I suppose they regarded “using the same tagline” as flattery.
Nowadays, that’s pronounced “IP infringement” and they darken your skies with lawyers. [sigh]