xref: /minix3/etc/usr/rc (revision 0bd61375ad17c51a0e4d044fe013042382c6f569)
1b684a8edSBen Gras# /usr/etc/rc - continued system initialization.
2b684a8edSBen Gras
361a4e15bSJorrit HerderRANDOM_FILE=/usr/adm/random.dat
461a4e15bSJorrit Herder
5b684a8edSBen Grascase "$#:$1" in
6b684a8edSBen Gras1:start|1:stop|1:down)
7b684a8edSBen Gras    action=$1
8b684a8edSBen Gras    ;;
9b684a8edSBen Gras*)  echo >&2 "Usage: $0 start|stop|down"
10b684a8edSBen Gras    exit 1
11b684a8edSBen Grasesac
12b684a8edSBen Gras
13b684a8edSBen Grasdaemonize()
14b684a8edSBen Gras{
15b684a8edSBen Gras    # Function to start a daemon, if it exists.
16b684a8edSBen Gras    local IFS=':'
17b684a8edSBen Gras    local name="$1"
18b684a8edSBen Gras    test "$1" = tcpd && name="$2"
19b684a8edSBen Gras
20b684a8edSBen Gras    for dir in $PATH
21b684a8edSBen Gras    do
22b684a8edSBen Gras	if [ -f "$dir/$1" ]
23b684a8edSBen Gras	then
24b684a8edSBen Gras	    echo -n " $name"
25b684a8edSBen Gras	    "$@" &
26b684a8edSBen Gras	    return
27b684a8edSBen Gras	fi
28b684a8edSBen Gras    done
29b684a8edSBen Gras}
30b684a8edSBen Gras
3161a4e15bSJorrit Herderup()
3261a4e15bSJorrit Herder{
3361a4e15bSJorrit Herder    service=$1
3461a4e15bSJorrit Herder    args=$2
3561a4e15bSJorrit Herder    device=$3
3661a4e15bSJorrit Herder
3761a4e15bSJorrit Herder    # Function to dynamically start a system service
3861a4e15bSJorrit Herder
3961a4e15bSJorrit Herder    # First check if this service is disabled at the boot monitor.
4061a4e15bSJorrit Herder    ifs="$IFS"; IFS=,
4161a4e15bSJorrit Herder    for name in `sysenv disable`
4261a4e15bSJorrit Herder    do
4361a4e15bSJorrit Herder        if [ "$name" = "$service" ]
4461a4e15bSJorrit Herder	then 	 return
4561a4e15bSJorrit Herder	fi
4661a4e15bSJorrit Herder    done
4761a4e15bSJorrit Herder    IFS="$ifs"; unset ifs
4861a4e15bSJorrit Herder
4961a4e15bSJorrit Herder    # Service is not disabled. Try to bring it up.
5061a4e15bSJorrit Herder    command="/usr/sbin/$service"
5161a4e15bSJorrit Herder    if [ ! -z "$args" ]; then command="$command -args \"$args\""; fi
5261a4e15bSJorrit Herder    if [ ! -z "$device" ]; then command="$command -dev \"$device\""; fi
5361a4e15bSJorrit Herder    echo -n " $service"
5461a4e15bSJorrit Herder    eval service up $command
5561a4e15bSJorrit Herder}
56f8c380c1SPhilip Homburg
57b684a8edSBen Grascase $action in
58b684a8edSBen Grasstart)
59b684a8edSBen Gras    # Select console font.
60b684a8edSBen Gras    test -f /etc/font && loadfont /etc/font </dev/console
61b684a8edSBen Gras
62b684a8edSBen Gras    # Cleanup.
63b684a8edSBen Gras    rm -rf /tmp/. /usr/run/. /usr/spool/lpd/. /usr/spool/locks/.
64b684a8edSBen Gras
65f8c380c1SPhilip Homburg    # load random number generator
66f8c380c1SPhilip Homburg    if [ -f $RANDOM_FILE ]
67f8c380c1SPhilip Homburg    then
68f8c380c1SPhilip Homburg    	cat < $RANDOM_FILE >/dev/random
69f8c380c1SPhilip Homburg    	# overwrite $RANDOM_FILE. We don't want to use this data again
70*0bd61375SJorrit Herder    	dd if=/dev/random of=$RANDOM_FILE bs=1024 count=1 2> /dev/null
71f8c380c1SPhilip Homburg    fi
72f8c380c1SPhilip Homburg
7361a4e15bSJorrit Herder    # Start servers and drivers set at the boot monitor.
7461a4e15bSJorrit Herder    echo -n "Starting services:"
7561a4e15bSJorrit Herder    up rtl8139
7661a4e15bSJorrit Herder    up fxp
7761a4e15bSJorrit Herder    up dpeth
7861a4e15bSJorrit Herder    up inet
7961a4e15bSJorrit Herder    up is "arg is leuk"
8061a4e15bSJorrit Herder    up printer "" /dev/lp
8161a4e15bSJorrit Herder    up floppy "" /dev/fd0
8261a4e15bSJorrit Herder    echo .
83b684a8edSBen Gras
84b684a8edSBen Gras    # Network initialization.
85b684a8edSBen Gras    (: </dev/tcp) 2>/dev/null && net=t	# Is there a TCP/IP server?
86b684a8edSBen Gras
87b684a8edSBen Gras    echo -n "Starting daemons:"
88b684a8edSBen Gras    daemonize update
8942050e39SBen Gras    daemonize usyslogd
909748a653SBen Gras
919748a653SBen Gras    # Ugly error message when starting cron from CD.
929748a653SBen Gras    # (and cron unnecessary then so..)
939748a653SBen Gras    if [ ! -f /CD ]
949748a653SBen Gras    then	daemonize cron
959748a653SBen Gras    fi
96*0bd61375SJorrit Herder    echo .
97b684a8edSBen Gras
98b684a8edSBen Gras    if [ "$net" ]
99b684a8edSBen Gras    then
100b684a8edSBen Gras	if [ -f /etc/rc.net ]
101b684a8edSBen Gras	then
102b684a8edSBen Gras	    # Let a customized TCP/IP initialization script figure it out.
103b684a8edSBen Gras	    . /etc/rc.net
104b684a8edSBen Gras	else
105b684a8edSBen Gras	    # Standard network daemons.
106*0bd61375SJorrit Herder    	    echo -n "Starting networking:"
107b684a8edSBen Gras	    daemonize dhcpd
108b684a8edSBen Gras	    daemonize nonamed
109b684a8edSBen Gras	    daemonize talkd
110b684a8edSBen Gras	    daemonize tcpd shell in.rshd
111b684a8edSBen Gras	    daemonize tcpd login in.rlogind
112b684a8edSBen Gras	    daemonize tcpd telnet in.telnetd
113b684a8edSBen Gras	    daemonize tcpd ftp in.ftpd
114b684a8edSBen Gras	fi
115b684a8edSBen Gras    fi
116b684a8edSBen Gras
117b684a8edSBen Gras    # The last daemon has been started, so close the list:
118b684a8edSBen Gras    echo .
119b684a8edSBen Gras
120b684a8edSBen Gras    if [ "$net" ]
121b684a8edSBen Gras    then
122b684a8edSBen Gras	# Get the nodename from the DNS and set it.
123b684a8edSBen Gras	t='-t 10'
124b684a8edSBen Gras	trap '' 2
125b684a8edSBen Gras	while :;
126b684a8edSBen Gras	do
127b684a8edSBen Gras	    intr $t hostaddr -h
128b684a8edSBen Gras
129b684a8edSBen Gras	    case $? in
130b684a8edSBen Gras	    142)
131b684a8edSBen Gras		echo "\
132b684a8edSBen GrasUnable to obtain an IP address after 10 seconds.  Hit DEL to get a root
133b684a8edSBen Grasprompt to investigate, otherwise just wait until an address is received..."
134b684a8edSBen Gras		t=
135b684a8edSBen Gras		;;
136b684a8edSBen Gras	    130)
137b684a8edSBen Gras		echo "Single user."
138b684a8edSBen Gras		intr sh
139b684a8edSBen Gras		echo "Continue waiting for an address..."
140b684a8edSBen Gras		;;
141b684a8edSBen Gras	    *)	break
142b684a8edSBen Gras	    esac
143b684a8edSBen Gras	done
144b684a8edSBen Gras	trap 2
145b684a8edSBen Gras    fi
146b684a8edSBen Gras
147b684a8edSBen Gras    # Recover files being edited when the system crashed.
148b684a8edSBen Gras    test -f /usr/bin/elvprsv && elvprsv /usr/tmp/elv*
149b684a8edSBen Gras
150b684a8edSBen Gras    # Run the daily cleanup on systems that are not on at night.
151b684a8edSBen Gras    test -f /usr/etc/daily && sh /usr/etc/daily boot &
152f8c380c1SPhilip Homburg
153f8c380c1SPhilip Homburg;;
154f8c380c1SPhilip Homburgstop|down)
155f8c380c1SPhilip Homburg    	# Save random data.
156f8c380c1SPhilip Homburg    	if dd if=/dev/random of=$RANDOM_FILE.new bs=1024 count=1 2>/dev/null
157f8c380c1SPhilip Homburg    	then
158f8c380c1SPhilip Homburg    		mv $RANDOM_FILE.new $RANDOM_FILE
159f8c380c1SPhilip Homburg	else
160f8c380c1SPhilip Homburg		echo 'Failed to save random data.'
161f8c380c1SPhilip Homburg	fi
162b684a8edSBen Grasesac
163