xref: /minix3/etc/usr/rc (revision ea398f994acab8ab3e20ee5ef2a7c01f8f352ee8)
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
1099748a653SBen Gras
1109748a653SBen Gras    # Ugly error message when starting cron from CD.
1119748a653SBen Gras    # (and cron unnecessary then so..)
1129748a653SBen Gras    if [ ! -f /CD ]
113*ea398f99SBen Gras    then	daemonize cron
1143775ce2eSBen Gras    else	mkdir /tmp/log
115*ea398f99SBen Gras    		rm -f /var/log || true
1163775ce2eSBen Gras		ln -s /tmp/log /var/log || true
1173775ce2eSBen Gras		. /etc/rc.cd
1189748a653SBen Gras    fi
119a3dfe3c9SBen Gras    daemonize syslogd
1200bd61375SJorrit Herder    echo .
121b684a8edSBen Gras
122b684a8edSBen Gras    if [ "$net" ]
123b684a8edSBen Gras    then
124b684a8edSBen Gras	if [ -f /etc/rc.net ]
125b684a8edSBen Gras	then
126b684a8edSBen Gras	    # Let a customized TCP/IP initialization script figure it out.
127b684a8edSBen Gras	    . /etc/rc.net
128b684a8edSBen Gras	else
129b684a8edSBen Gras	    # Standard network daemons.
1300bd61375SJorrit Herder    	    echo -n "Starting networking:"
1313e6ec290SBen Gras	    if grep 'psip0.*default' /etc/inet.conf >/dev/null
132ef676bd3SBen Gras	    then	ifconfig -h 10.0.0.1
133ef676bd3SBen Gras	    else	daemonize dhcpd
134ef676bd3SBen Gras	    fi
135b684a8edSBen Gras	    daemonize nonamed
136b684a8edSBen Gras	    daemonize talkd
137b684a8edSBen Gras	    daemonize tcpd shell in.rshd
138b684a8edSBen Gras	    daemonize tcpd login in.rlogind
139b684a8edSBen Gras	    daemonize tcpd telnet in.telnetd
140b684a8edSBen Gras	    daemonize tcpd ftp in.ftpd
141b684a8edSBen Gras	    # The last daemon has been started, so close the list:
142b684a8edSBen Gras	    echo .
14394095d87SBen Gras	fi
14494095d87SBen Gras    fi
145b684a8edSBen Gras
146b684a8edSBen Gras    if [ "$net" ]
147b684a8edSBen Gras    then
148b684a8edSBen Gras	# Get the nodename from the DNS and set it.
149b684a8edSBen Gras	trap '' 2
150682efc75SBen Gras	intr -t 20 hostaddr -h || echo "Unable to obtain an IP address."
151b684a8edSBen Gras	trap 2
152b684a8edSBen Gras    fi
153b684a8edSBen Gras
154b684a8edSBen Gras    # Recover files being edited when the system crashed.
155b684a8edSBen Gras    test -f /usr/bin/elvprsv && elvprsv /usr/tmp/elv*
156b684a8edSBen Gras
157b684a8edSBen Gras    # Run the daily cleanup on systems that are not on at night.
158b684a8edSBen Gras    test -f /usr/etc/daily && sh /usr/etc/daily boot &
159f8c380c1SPhilip Homburg
160f8c380c1SPhilip Homburg;;
161f8c380c1SPhilip Homburgstop|down)
162093cfe11SBen Gras    	# Save random data, if /usr is mounted rw.
163093cfe11SBen Gras	if grep ' \/usr .*rw' /etc/mtab >/dev/null
164093cfe11SBen Gras	then
165f8c380c1SPhilip Homburg	  if dd if=/dev/random of=$RANDOM_FILE.new bs=1024 count=1 2>/dev/null
166f8c380c1SPhilip Homburg    	  then
167f8c380c1SPhilip Homburg    		mv $RANDOM_FILE.new $RANDOM_FILE
168f8c380c1SPhilip Homburg	  else
169f8c380c1SPhilip Homburg		echo 'Failed to save random data.'
170f8c380c1SPhilip Homburg	  fi
171428f9d63SBen Gras	fi
172b684a8edSBen Grasesac
173ba667a07SBen Gras
174ba667a07SBen Grasd=/usr/local/etc/rc.d
175ba667a07SBen Gras# Let packages run their own scripts
176ba667a07SBen Grasif [ -d "$d" ]
177ba667a07SBen Grasthen	if cd $d
178ba667a07SBen Gras	then
179fec2fa95SBen Gras		echo -n "Local packages ($action): "
180ba667a07SBen Gras		for f in *
181ba667a07SBen Gras		do
182ba667a07SBen Gras			if [ -x "$f" ]
183ba667a07SBen Gras			then	echo -n "$f "
184ba667a07SBen Gras				sh "$f" "$action"
185ba667a07SBen Gras			fi
186ba667a07SBen Gras		done
187ba667a07SBen Gras		echo " done."
188ba667a07SBen Gras	fi
189ba667a07SBen Grasfi
190ba667a07SBen Gras
191