Subject: take 2; which way should we go for /etc/rc...
To: None <>
From: Luke Mewburn <>
List: tech-userlevel
Date: 12/02/1999 11:03:05
Well, what a contentious issue!  People seem to be confusing a problem
with the implementation with which system NetBSD ships with.

I see the following options for implementation. We should choose one
of these, and possibly ship with the ability for a user to switch to
another if they so desire.

a)	Do nothing
		- nochangeniks like it
		- hard to control daemons post boot (without examining
		  /etc/rc to see how something was started)
		- difficult for third parties to add scripts

b)	/etc/rc is autogenerated from /etc/init.d at some stage
	(possibly by the developer who last changed an init.d
		- works almost the way things do now, as well as
		  allowing manual control over daemons with
		- still not easy for thirdparty scripts, unless
		  they follow the same convention that our scripts
		  do (supporting dumpstart, etc...)
		- have to regen /etc/rc if a change occurs in

c)	/etc/rc runs rcorder over /etc/init.d and runs scripts
	as necessary. ( and implements this)
		- thirdparty scripts (that support `start' and `stop'
		  work) with minor changes (need to add `PROVIDE:'
		  and `REQUIRE:' lines if ordering is necessary)
		- slower that b)
		- still needs minor changes to 3rdparty scripts
		  (you need to add the PROVIDE/REQUIRE lines)

d)	/etc/rc runs /etc/rc3.d/S* in filename order.  (
	implements this). /etc/rc3.d is created from /etc/init.d by
	running `mkrc -s01` once.
		- ordering is obvious
		- allows people to install their own scripts in a
		  given order
		- considered to be an ugly warty sysvism by a lot of
		- if 3rdparty scripts are to be integrated into the
		  mkrc phase they need PROVIDE/REQUIRE lines.
		- not a true SYSV setup (no inittab/runlevels)

e)	/etc/rc is autogenerated from /etc/init.d/ containing a list of
	lines which just do "/etc/init.d/foo start; /etc/init.d/foo2 start",
		- ordering is obvious in script (doesn't depend upon
		  rcordering at boot time)
		- have to regen /etc/rc if /etc/init.d is updated.

f)	Full SYSV style run levels.
		- don't know
		- does it really win us anything.
		- This is BSD.

[There's probably other options I've missed as well.]

The questions are:

	1. Which method do we ship with enabled by default?
		I'd argue for b) or c), possibly supporting d) or e),
		and strongly against f).

	2. Do we support the other methods (e.g sample scripts in
	   /usr/share/samples/rc/) such as if we choose
		I'd say `yes', because there's no real harm in
		giving people the choice.

Fight it out, people...

(Followups to the list only please; I get a copy anyway...)