Subject: Re: Proposed rc.d/rc.conf[.d] changes....
To: Darren Reed <darrenr@reed.wattle.id.au>
From: Eduardo Horvath <eeh@turbolinux.com>
List: tech-userlevel
Date: 05/08/2000 08:45:14
On Mon, 8 May 100, Darren Reed wrote:
[...]
> /etc/rc.config.d
> - *all* HP supplied init RC files have an associated config file with a
> variable to control the starting/stopping of a service:
[...]
> An RC script will typically do ". /etc/rc.config", which will source all of
> the files in /etc/rc.config.d, at the top rather than read in just its own
> config file explicitly. From a system admin POV, it's a damn sight easier
> to manage than the mess Solaris dumps you with. You can even start using
> RCS/CVS/SCCS in /etc/rc.config.d and *NOT* have to change anything in order
> to prevent lossage. There is *rarely* a need to edit the RC files directly.
I don't want to see yet another directory of scripts that need to be kept
in sync with the stuff in /etc/rc.d. In addition to the maintenance issue
is the overhead of .sourcing each one of these little scripts.
Let me propose the following:
Have a section at the head of the scripts with all the configuration
variables, possibly bracketed by specific comments so the contents can be
mechanically extracted. It would look something like this:
#!/bin/sh
#
# $NetBSD: amd,v 1.2 2000/04/15 21:14:50 tsarna Exp $
#
# PROVIDE: amd
# REQUIRE: portmap mountall ypbind
# CONFIG
#
# This section configures amd and this comment would end up in
# /etc/rc.conf
#
amd_flags=${amd_flags:="-l syslog -x error,noinfo,nostats"}
amd_dir=${amd_dir:=/amd} # mount dir
amd_master=${amd_master:=/etc/amd/master} # master map
# ENDCONFIG
. /etc/rc.subr
. /etc/rc.conf
name="amd"
command="/usr/sbin/${name}"
command_args='-p -a '$amd_dir' `sed s/#.*$// <'$amd_master'`
>/var/run/amd.pid'
required_files="$amd_master"
required_dirs="$amd_dir"
required_vars="portmap"
run_rc_command "$1"
These would be the default settings. A script would then be run to
extract these variables from everything in /etc/rc.d and deposit the
default values in /etc/rc.conf. You can then override the defaults by
editting /etc/rc.conf.
> My main concern with NetBSD's rc implementation is the problem of controlling
> what gets started at bootup and what gets stopped when you shutdown. Having
> two separate directories (/etc/rc.d and /etc/init.d) without adding S/K only
> alleviates one side of the problem. I'm beginning to think that it may even
> need to be rototilled as the shutdown side of things didn't seem to be very
> well thought through during design/implementation by any of us.
I like the idea of adding an /etc/init.d to hold the primary copies of the
rc scripts and copying/symlinking/hardlinking them to an entry in
/etc/rc.d to enable them. It's clean and you can immediately tell what's
enabled and what's disabled.
I don't want to se the S/K stuff which is ugly and a maintenance
nightmare, and I see no need for that or an /etc/shutdown.d since that
should be handled by PROVIDE/REQUIRE. If it was started on the way up, it
should be turned off on the way down.
Eduardo Horvath