Subject: A survey of modern startup systems
To: None <tech-userlevel@netbsd.org>
From: Nathan J. Williams <nathanw@MIT.EDU>
List: tech-userlevel
Date: 03/19/2000 02:57:09
With the latest round of the rc.d flamage, I was reminded that I
wanted to go look at some of the current Unix-like systems in the
world and find out how they deal with this pile of muck. I've
collected information on Irix (6.5), Digital Unix (4.0), Solaris
(2.6), and RedHat Linux (6.2). Major missing data points are Debian
Linux, BSD/OS, and HP-UX. I glanced at FreeBSD and didn't find much
interesting.

The survey describes the following properties of each system:

"enable":   How a startup script or service is turned on or off.
"options":  How startup scripts or services are provided with parameters.
"ordering": What determines the order of the scripts to run, and how
            that ordering is maintained.
"commands": For systems subdivided into per-service scripts,
            SysV-style, what commands the scripts generally support.
        
Other tools for dealing with this part of the system are
mentioned. Known integration with the native package systems is also
mentioned. 

My goal here is not to describe the myriad different ways in which
these systems can be hacked or extended, but the ways in which their
use and maintenance are documented or designed to work by the system
vendors. I have also tried to be purely descriptive and not
judgemental.

Improvements, corrections, and additional data points welcomed.

**************        

*****
* NetBSD-current (2000/3/19)
/etc/rc.conf and /etc/rc.local.conf contain shell-style variables.
No tools [yet?] for manipulation of these. 

enable:   variables in /etc/rc.conf

options:  variables in /etc/rc.conf

ordering: topological sort computed from requires/depends line
          embedded in scripts.

commands: start, stop, restart, status, reload


*****
* Irix:

enable:   /etc/config/<foo> files contain "on" or "off"
	  changable and testable with chkconfig
	 
options:  /etc/config/<foo>.options files contains options in various
	  forms (command-line options, shell variables, other random
	  formats). Manually edited.

ordering: SysV-style rc<n>.d directories full of numbered symlinks. 

commands: start, stop; singletons include netstart, verify, surrender,
          status, restart, netstop, init, cleanup.


*****
* Digital Unix:
/etc/rc.config.site and /etc/rc.config (latter overrides former)
contain shell-style variables. 

enable:   rc.config variables [not widely used for this purpose].

options:  rc.config variables.

ordering: SysV-style rc<n>.d directories full of numbered symlinks. 
	  Links installed as part of packages.

commands: start, stop; some use of restart; singletons include add,
          delete, dump, list, debug_up, debug_down, dump_stats.

The "rcmgr" tool can be used to get or set any variable in rc.config
[but not delete?]


*****
* Solaris:

enable:   existence of script in rc<n>.d (installed from package)

options:  None exposed [admins edit scripts directly?]

ordering: SysV-style rc<n>.d directories full of numbered symlinks.
	  Links installed as part of packages.

commands: start, stop; singletons include reset, update_printers, rpcstart


*****
* Redhat Linux:

enable:   existence of script in rc<n>.d (created by chkconfig, usually
	  invoked from package install script)

options:  /etc/sysconfig/foo contain shell-style variables for that system.

ordering: SysV-style rc<n>.d directories full of numbered
          symlinks. Links are generated by chkconfig; link numbers and
          runlevels to run at are stored in each script and read by
          chkconfig.

commands: start, stop, status; some support restart and reload;
          singletons include add, del, reconf, probe.

The "linuxconf" GUI tool can be used to manipulate configuration
information (/etc/sysconfig/foo and lots of other stuff in /etc).


*****
* FreeBSD (not examined carefully)

"traditional" BSD /etc/rc and /etc/rc.conf

**************        

        - Nathan