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