Gentoo Weekly News Letter
Like some other Gentoo users, I noticed the new baselayout, and groaned as I merged yet another series of small changes. However, this time I read the Gentoo Weekly Newsletter. Here are the bullet-list highlights that I dug.
Network backgrounding support from wpa_supplicant, ifplugd and netplug with service dependency restart -- Typically ifplugd is used to monitor ethernet cable being in/out and start/stop the network service accordingly, along with the services depending on that network service. The problem was that when ifplugd re-started the network service it didn't restart the services it stopped! Now ifplugd and netplug support have been merged into baselayout, we have more direct control and can remember which services were stopped by the network service so we can re-start them. wpa_supplicant can now do this too.
Separate network configuration per interface -- Each interface is now able to have its own resolv.conf and default route. We also prioritize wired over wireless and merge resolv.confs together. This works great for roaming laptop users.
Interactive startup -- Do you have a service that causes serious issues when booting? You should not, but if you do then you can now choose to start, skip, continue or drop to shell for each service interactively. Using generic stty and shell calls we do this in a non-blocking way without the need for a daemon.
Parallel startup/shutdown improvements -- Parallel startup and shutdown didn't really do what it claimed to in previous releases, but now it's very parallel and much faster than before. Which leads us onto ....
Improved service dependency ordering (albeit slower) -- Thanks to parallel startup, we found that our service ordering was totally wrong. So we had to re-write it entirely. So far it's in its fourth re-write using a topological sort written in bash and has been doing a very good job for around three months now so we think we've finally cracked it.
Service daemon status checks -- Services that launch daemons via start-stop-daemon now ensure that they really start instead of start - become daemon - die due to invalid config fooling rc into thinking they have started. Also, if you check a service status we check if the daemon is still running or not. If not then we stop the service and dependencies. We also really stop the service, which fixes an issue where you start cups, re-emerge cups and then it cannot stop or restart.
The pain is clearly worth it.