Trouble with freebsd rc system.

Ian Lepore ian at FreeBSD.org
Sun Sep 14 22:41:01 UTC 2014


On Sun, 2014-09-14 at 15:26 -0700, Alfred Perlstein wrote:
> Hey folks,
> 
> We are building an appliance based on FreeBSD.
> 
> One of the issues we have is that during development we need to know 
> which rc script we are in during boot so that if something is hanging or 
> otherwise misbehaving we know which script it is.
> 
> I am contemplating this hack to /etc/rc.subr's run_rc_command() method:
> 
>     run_rc_command()
>     {
>          _return=0
>          rc_arg=$1
>          if [ -z "$name" ]; then
>              err 3 'run_rc_command: $name is not set.'
>          fi
> 
>          # Don't repeat the first argument when passing additional command-
>          # line arguments to the command subroutines.
>          #
>          shift 1
>          rc_extra_args="$*"
> 
>          echo "===> $name $rc_arg"
> 
> 
> As you can see I've added the call to echo so we know where we are.
> 
> This is somewhat suboptimal because we really only want that output 
> during startup.
> 
> So a few questions:
> 
> 1. Is there a way to know we are booting when inside of 
> /etc/rc.subr:run_rc_command() ?
> 2. Is there a magic thing I'm missing that does what I want (output 
> which /etc/rc.d/ script I am about to run)?
> 3. How would I make a knob to turn off the "echo" so that I can 
> contribute this back to FreeBSD without getting into a bikeshed on 
> bootup messages.
> 
> Kindly please advise.
> 
> -Alfred

A bit further down in run_rc_command, in the start) case, is:

             check_startmsgs && echo "Starting ${name}."

and that output is controlled with rc_startmsgs=yes, which is the
default.

-- Ian





More information about the freebsd-arch mailing list