nosh version 1.9

Adrian Chadd adrian at freebsd.org
Sun Oct 19 02:16:29 UTC 2014


On 18 October 2014 18:51, Alfred Perlstein <bright at mu.org> wrote:
> Very cool.
>
> Wondering about the idea of /etc/rc.conf *not* being a shell script... this
> is sort of bad imo as I can't see any other way to provide the settings
> dynamically for the startup scripts at a glance.
>
> I'll give you an example... FreeNAS (and by extension the appliance we are
> building at Norse) has /etc/rc.conf.local as a shell script that pulls data
> from an sqlite database, this allows us to set various services on/off based
> on the contents of that sqlite database file.
>
> This in turn allows us to leverage most of the existing /etc/rc.d and by
> extension the /usr/local/etc/rc.d files provided by ports.
>
> I'm wondering how one could still do that if /etc/rc.conf and
> /etc/rc.conf.local were no longer scripts?

The same way /etc/rc.conf and /etc/rc.conf.local is pulled in - via
the little snippet of stuff at the end of /etc/defaults/rc.conf , and
this bit of config in that file:

local_startup="/usr/local/etc/rc.d" # startup script dirs.
script_name_sep=" "     # Change if your startup scripts' names contain spaces
rc_conf_files="/etc/rc.conf /etc/rc.conf.local"

So, we just need some method of pulling in environment variables in
whatever order we need from whatever place we need.

(God, why do I know this stuff? Then I remembered -
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=17595 . God damnit.)

The tricky bit is trying to make it so we don't call sqlite like a
thousand times to pull out all of the environment variables for each
invocation of an rc script.


-adrian


More information about the freebsd-hackers mailing list