Creating the rc script

The first main bootscript is the /etc/init.d/rc script. Create a new file /etc/init.d/rc containing the following:



#!/bin/sh
# Begin /etc/init.d/rc
#
# By Jason Pearce  - [email protected]
# Modified by Gerard Beekmans - [email protected]
#

# Un-comment the following for debugging.
# debug=echo

#
# Start script or program.

startup() {
case "$1" in
        *.sh)
                $debug sh "$@"
                ;;
        *)
                $debug "$@"
                ;;
esac
}   

# Ignore CTRL-C only in this shell, so we can interrupt subprocesses.
trap ":" INT QUIT TSTP

# Set onlcr to avoid staircase effect.
stty onlcr 0>&1

# Now find out what the current and what the previous runlevel are.
runlevel=$RUNLEVEL
# Get first argument. Set new runlevel to this argument.

[ "$1" != "" ] && runlevel=$1
if [ "$runlevel" = "" ]
then
        echo "Usage: $0 <runlevel>" >&2
        exit 1
fi

previous=$PREVLEVEL
[ "$previous" = "" ] && previous=N

export runlevel previous

# Is there an rc directory for this new runlevel?

if [ -d /etc/rc$runlevel.d ]
then
        # First, run the KILL scripts for this runlevel.
        if [ $previous != N ]
        then
                for i in /etc/rc$runlevel.d/K*
        do
                [ ! -f $i ] && continue

                        suffix=${i#/etc/rc$runlevel.d/K[0-9][0-9]}
                        previous_start=/etc/rc$previous.d/S[0-9][0-9]$suffix
                        sysinit_start=/etc/rcS.d/S[0-9][0-9]$suffix

                        # Stop the service if there is a start script
                        # in the previous run level.
                        [ ! -f $previous_start ] && [ ! -f sysinit_start] && continue

                        startup $i stop
                done
        fi

        # Now run the START scripts for this runlevel.
        for i in /etc/rc$runlevel.d/S*
        do
                [ ! -f $i ] && continue

                if [ $previous != N ]
        then
                        # Find start script in previous runlevel and
                        # stop script in this runlevel.
                        suffix=${i#/etc/rc$runlevel.d/S[0-9][0-9]}
                        stop=/etc/rc$runlevel.d/K[0-9][0-9]$suffix
                        previous_start=/etc/rc$previous.d/S[0-9][0-9]$suffix

                        # If there is a start script in the previous
                        # level
                        # and _no_ stop script in this level, we don't
                        # have to re-start the service.
                        [ -f $previous_start ] && [ ! -f $stop ] && continue
                fi

                case "$runlevel" in
                        0|6)
                                startup $i stop
                                ;;
                        *)
                                startup $i start
                                ;;
                esac
        done
fi

# End /etc/init.d/rc