xref: /minix3/etc/usr/rc (revision 428f9d63c4860b0cbde640203e13ea3ad17c785b)
1b684a8edSBen Gras# /usr/etc/rc - continued system initialization.
2b684a8edSBen Gras
361a4e15bSJorrit HerderRANDOM_FILE=/usr/adm/random.dat
4e21c135fSBen GrasLOCAL_FILE=/usr/etc/rc.local
561a4e15bSJorrit Herder
6b684a8edSBen Grascase "$#:$1" in
7b684a8edSBen Gras1:start|1:stop|1:down)
8b684a8edSBen Gras    action=$1
9b684a8edSBen Gras    ;;
10b684a8edSBen Gras*)  echo >&2 "Usage: $0 start|stop|down"
11b684a8edSBen Gras    exit 1
12b684a8edSBen Grasesac
13b684a8edSBen Gras
14e21c135fSBen Grasif [ -f "$LOCAL_FILE" ]
15e21c135fSBen Grasthen	. "$LOCAL_FILE" $1
16e21c135fSBen Grasfi
17e21c135fSBen Gras
1840e9875fSJorrit Herderdisabled()
1940e9875fSJorrit Herder{
2040e9875fSJorrit Herder    ifs="$IFS"; IFS=,
218cb902dcSJorrit Herder    for skip in `sysenv disable`
2240e9875fSJorrit Herder    do
238cb902dcSJorrit Herder        if [ "$skip" = "$1" ]
2440e9875fSJorrit Herder	then
2540e9875fSJorrit Herder                IFS="$ifs"; unset ifs
2640e9875fSJorrit Herder		return 0
2740e9875fSJorrit Herder	fi
2840e9875fSJorrit Herder    done
2940e9875fSJorrit Herder    IFS="$ifs"; unset ifs
3040e9875fSJorrit Herder    return 1
3140e9875fSJorrit Herder}
3240e9875fSJorrit Herder
33b684a8edSBen Grasdaemonize()
34b684a8edSBen Gras{
35b684a8edSBen Gras    # Function to start a daemon, if it exists.
36b684a8edSBen Gras    local IFS=':'
37b684a8edSBen Gras    local name="$1"
38b684a8edSBen Gras    test "$1" = tcpd && name="$2"
39b684a8edSBen Gras
40b684a8edSBen Gras    for dir in $PATH
41b684a8edSBen Gras    do
42b684a8edSBen Gras	if [ -f "$dir/$1" ]
43b684a8edSBen Gras	then
4440e9875fSJorrit Herder
4540e9875fSJorrit Herder            # check if this service is disabled at the boot monitor.
4640e9875fSJorrit Herder            if disabled $name; then return; fi
4740e9875fSJorrit Herder
48b684a8edSBen Gras	    echo -n " $name"
49b684a8edSBen Gras	    "$@" &
50b684a8edSBen Gras	    return
51b684a8edSBen Gras	fi
52b684a8edSBen Gras    done
53b684a8edSBen Gras}
54b684a8edSBen Gras
5561a4e15bSJorrit Herderup()
5661a4e15bSJorrit Herder{
5761a4e15bSJorrit Herder    service=$1
582aac756eSJorrit Herder    shift
5961a4e15bSJorrit Herder
6061a4e15bSJorrit Herder    # Function to dynamically start a system service
6161a4e15bSJorrit Herder
6261a4e15bSJorrit Herder    # First check if this service is disabled at the boot monitor.
6340e9875fSJorrit Herder    if disabled $service; then return; fi
6461a4e15bSJorrit Herder
6561a4e15bSJorrit Herder    # Service is not disabled. Try to bring it up.
6661a4e15bSJorrit Herder    echo -n " $service"
672aac756eSJorrit Herder    service up /usr/sbin/$service "$@"
6861a4e15bSJorrit Herder}
69f8c380c1SPhilip Homburg
70b684a8edSBen Grascase $action in
71b684a8edSBen Grasstart)
72b684a8edSBen Gras    # Select console font.
73b684a8edSBen Gras    test -f /etc/font && loadfont /etc/font </dev/console
74b684a8edSBen Gras
75b684a8edSBen Gras    # Cleanup.
76b684a8edSBen Gras    rm -rf /tmp/. /usr/run/. /usr/spool/lpd/. /usr/spool/locks/.
77b684a8edSBen Gras
78e5610815SJorrit Herder    # Start servers and drivers set at the boot monitor.
793cb00065SJorrit Herder    echo -n "Starting services:"
802aac756eSJorrit Herder    up random -dev /dev/random -period 3HZ
81c12b74daSPhilip Homburg
82f8c380c1SPhilip Homburg    # load random number generator
83f8c380c1SPhilip Homburg    if [ -f $RANDOM_FILE ]
84f8c380c1SPhilip Homburg    then
85f8c380c1SPhilip Homburg    	cat < $RANDOM_FILE >/dev/random
86f8c380c1SPhilip Homburg    	# overwrite $RANDOM_FILE. We don't want to use this data again
870bd61375SJorrit Herder    	dd if=/dev/random of=$RANDOM_FILE bs=1024 count=1 2> /dev/null
88f8c380c1SPhilip Homburg    fi
89f8c380c1SPhilip Homburg
90e5610815SJorrit Herder    # start only network drivers that are in use
9175cb21f4SBen Gras    for driver in lance rtl8139 fxp dpeth dp8390
92e5610815SJorrit Herder    do
9387732bd6SBen Gras        if grep " $driver " /etc/inet.conf > /dev/null  2>&1
94e5610815SJorrit Herder        then
95e21c135fSBen Gras            eval arg=\$${driver}_arg
962aac756eSJorrit Herder	    if [ ! -z "$arg" ]; then arg="-args \"$arg\""; fi
972aac756eSJorrit Herder            eval up $driver $arg -period 5HZ
98e5610815SJorrit Herder        fi
99e5610815SJorrit Herder    done
1002aac756eSJorrit Herder    up inet
1012aac756eSJorrit Herder    up printer -dev /dev/lp -period 10HZ
10261a4e15bSJorrit Herder    echo .
103b684a8edSBen Gras
104b684a8edSBen Gras    # Network initialization.
105b684a8edSBen Gras    (: </dev/tcp) 2>/dev/null && net=t	# Is there a TCP/IP server?
106b684a8edSBen Gras
107b684a8edSBen Gras    echo -n "Starting daemons:"
108b684a8edSBen Gras    daemonize update
10948cb1bcbSBen Gras    rotate /usr/log/messages 7
11042050e39SBen Gras    daemonize usyslogd
1119748a653SBen Gras
1129748a653SBen Gras    # Ugly error message when starting cron from CD.
1139748a653SBen Gras    # (and cron unnecessary then so..)
1149748a653SBen Gras    if [ ! -f /CD ]
1159748a653SBen Gras    then	daemonize cron
11687732bd6SBen Gras    else	. /etc/rc.cd
1179748a653SBen Gras    fi
1180bd61375SJorrit Herder    echo .
119b684a8edSBen Gras
120b684a8edSBen Gras    if [ "$net" ]
121b684a8edSBen Gras    then
122b684a8edSBen Gras	if [ -f /etc/rc.net ]
123b684a8edSBen Gras	then
124b684a8edSBen Gras	    # Let a customized TCP/IP initialization script figure it out.
125b684a8edSBen Gras	    . /etc/rc.net
126b684a8edSBen Gras	else
127b684a8edSBen Gras	    # Standard network daemons.
1280bd61375SJorrit Herder    	    echo -n "Starting networking:"
129b684a8edSBen Gras	    daemonize dhcpd
130b684a8edSBen Gras	    daemonize nonamed
131b684a8edSBen Gras	    daemonize talkd
132b684a8edSBen Gras	    daemonize tcpd shell in.rshd
133b684a8edSBen Gras	    daemonize tcpd login in.rlogind
134b684a8edSBen Gras	    daemonize tcpd telnet in.telnetd
135b684a8edSBen Gras	    daemonize tcpd ftp in.ftpd
136b684a8edSBen Gras	    # The last daemon has been started, so close the list:
137b684a8edSBen Gras	    echo .
13894095d87SBen Gras	fi
13994095d87SBen Gras    fi
140b684a8edSBen Gras
141b684a8edSBen Gras    if [ "$net" ]
142b684a8edSBen Gras    then
143b684a8edSBen Gras	# Get the nodename from the DNS and set it.
144b684a8edSBen Gras	trap '' 2
145ddb8e730SBen Gras	intr -t 10 hostaddr -h || echo "Unable to obtain an IP address."
146b684a8edSBen Gras	trap 2
147b684a8edSBen Gras    fi
148b684a8edSBen Gras
149b684a8edSBen Gras    # Recover files being edited when the system crashed.
150b684a8edSBen Gras    test -f /usr/bin/elvprsv && elvprsv /usr/tmp/elv*
151b684a8edSBen Gras
152b684a8edSBen Gras    # Run the daily cleanup on systems that are not on at night.
153b684a8edSBen Gras    test -f /usr/etc/daily && sh /usr/etc/daily boot &
154f8c380c1SPhilip Homburg
155f8c380c1SPhilip Homburg;;
156f8c380c1SPhilip Homburgstop|down)
157f8c380c1SPhilip Homburg    	# Save random data.
158*428f9d63SBen Gras	bootcd="`/bin/sysenv bootcd`"
159f8c380c1SPhilip Homburg    	if dd if=/dev/random of=$RANDOM_FILE.new bs=1024 count=1 2>/dev/null
160f8c380c1SPhilip Homburg    	then
161f8c380c1SPhilip Homburg    		mv $RANDOM_FILE.new $RANDOM_FILE
162f8c380c1SPhilip Homburg	else
163*428f9d63SBen Gras		if [ "$bootcd" != 1 ]
164*428f9d63SBen Gras		then
165f8c380c1SPhilip Homburg			echo 'Failed to save random data.'
166f8c380c1SPhilip Homburg		fi
167*428f9d63SBen Gras	fi
168b684a8edSBen Grasesac
169