Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Jun 2002 17:53:03 +0930
From:      Greg 'groggy' Lehey <grog@FreeBSD.org>
To:        Mike Makonnen <makonnen@pacbell.net>
Cc:        gordont@gnf.org, current@FreeBSD.ORG
Subject:   Re: HEADS UP: rc.d is in the tree
Message-ID:  <20020615082303.GI80429@wantadilla.lemis.com>
In-Reply-To: <20020615003436.05e49755.makonnen@pacbell.net>
References:  <Pine.LNX.4.44.0206131534350.28471-100000@smtp.gnf.org> <20020615011431.GG80429@wantadilla.lemis.com> <20020615003436.05e49755.makonnen@pacbell.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday, 15 June 2002 at  0:34:36 -0700, Mike Makonnen wrote:
> On Sat, 15 Jun 2002 10:44:31 +0930
> "Greg 'groggy' Lehey" <grog@FreeBSD.ORG> wrote:
>
>> On Thursday, 13 June 2002 at 15:37:55 -0700, Gordon Tetlow wrote:
>>> I've imported the excellent work by Mike Makonnen into the tree.
>>
>> Can you summarize what the differences are?
>
> o Instead of a few monolithic scripts in /etc there are many task oriented
>    scripts in /etc/rc.d
> o Dynamic ordering of boot scripts performed at boot
> o Ability to run a daemon in a jailed environment as a non-privileged user
> o common subroutines to make scripts shorter and easier to maintain
> o If necessary, service specific knobs in /etc/rc.conf.d/

Hmm, appears to be Luke Mewburn's NetBSD stuff, which I know.
Shouldn't there be an "Obtained From: NetBSD" in the commit messages?

Are you (or is anybody) doing something about keeping as close as
possible to being in sync with NetBSD?

>
> Basically, the scripts /etc/rc* scripts have been broken down into individual
> scripts, each one doing one specific task**. In addition the dependency
> ordering of the scripts is performed at boot time, so if you have local scripts
> that you want executed at boot time, it's just a matter of writing up the script,
> defining what services it should follow (i.e- after local disks have been mounted),
> and then putting it
> in /etc/rc.d/. There's a file: /etc/rc.subr, which is intended to make your scripts
> as short as possible. It contains common subroutines that are useful in writing
> scripts. Here's a quick introduction:
>
> #!/bin/sh
> #
>
> . /etc/rc.subr
>
> # PROVIDE: fooservice
> # REQUIRE: barservice mountcritlocal
> # KEYWORD: FreeBSD
>
> name="foo"
> rcvar=`set_rcvar`
> command="/usr/bin/foo"
> required_files="/etc/foo.conf"
>
> load_rc_config $name
> run_rc_command "$1"
>
> Given this script, the routines in rc.subr will do the following:
> o check rc.conf and /etc/rc.conf.d/foo to make sure 'foo_enable' is set.
> o pull in the correct path to the command if 'foo_command' is specified,
>    and make sure it is executable
> o check that the required file /etc/foo.conf exists
> o pull in any command line options specified in the 'foo_flags' variable
> o if the appropriate variables are defined, start foo in a jail as a non-privileged user.
> o tell you whether foo is already started
> o tell you what pid foo is using
> o let you start foo
> o let you stop all instances of foo
> o and some more that I can't think of right now
>
> IMO the functionality you get for just those 11 lines is well worth the small effort
> required in readjusting to this new scheme. If what you want to do requires
> a little more customization, then you can also define custom start/stop/etc...
> routines that will be executed instead of the default one.
>
> Having said that, there is remarkably little to adjust to. Baring any
> bugs in the scripts, switching on rcng should not break anything.
> I have tried to include temporary compatibility shims to ensure that.
> I had intended to remove them before 5.0-RELEASE, but they should
> probably be marked as deprecated and instead removed in 6.0-RELEASE.
>
>
> Cheers,
> Mike Makonnen
>
> ** Most scripts do one specific task, but there are exceptions. It is
> acceptable to do more than one task if they are closely related: for
> example: /etc/rc.d/sendmail

--
See complete headers for address and phone numbers

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020615082303.GI80429>