2015-06-22
Modern *BSDs have a much better init system than I was expecting
For a long time, the *BSDs (FreeBSD, OpenBSD, and NetBSD) had what
was essentially the classical BSD init system, with all of its weaknesses. They made
things a little bit simpler by having things like a configuration
file where you could set whether standard daemons were started or
not (and what arguments they got), instead of having to hand edit
your /etc/rc
, but that was about the extent of their niceness.
When I started being involved with OpenBSD on our firewalls here, that was the 'BSD init system' that
I got used to (to the extent that I had anything to do with it at
all).
Well, guess what. While I wasn't looking, the *BSDs have introduced
a much better system called rc.d
. The rc.d
system is basically
a lightweight version of System V init; it strips out all of the
runlevels, rcN.d
directories, SNN and KNN symlinks, and so on to
wind up with just shell scripts in /etc/rc.d
and some additional
support stuff.
As far as I can tell from some quick online research, this system originated in NetBSD back in 2001 or so (see the bottom). FreeBSD then adopted it in FreeBSD 5.0, released in January 2003, although they may not have pushed it widely initially (their Practical rc.d scripting in BSD has an initial copyright date of 2005). OpenBSD waited for quite a while (in the OpenBSD way), adopting it only in OpenBSD 4.9 (cf), which came out in May of 2011.
Of course what this really means is that I haven't looked into the state of modern *BSDs for quite a while. Specifically, I haven't looked into FreeBSD (I'm not interested in OpenBSD for anything except its specialist roles). For various reasons I haven't historically been interested in FreeBSD, so my vague impressions of it basically froze a long time ago. Clearly this is somewhat of a mistake and FreeBSD has moved well forward from what I naively expected. Ideally I should explore modern FreeBSD at some point.
(The trick with doing this is finding something real to use FreeBSD for. It's not going to be my desktop and it's probably not going to be any of our regular servers, although it's always possible that FreeBSD would be ideal for something and we just don't know it because we don't know FreeBSD.)