Fix sendmail_flags, long ago it was imported from /etc/netstart
[unix-history] / etc / rc
diff --git a/etc/rc b/etc/rc
index 793c8f9..4e2cee7 100644 (file)
--- a/etc/rc
+++ b/etc/rc
+#!/bin/sh
+#      $Id: rc,v 1.9 1993/12/17 04:20:30 ache Exp $
+#      From: @(#)rc    5.27 (Berkeley) 6/5/91
+
+# System startup script run by init on autoboot
+# or after single-user.
+# Output and error are redirected to console by init,
+# and the console is the controlling terminal.
+
+stty status '^T'
+
+# Set shell to ignore SIGINT (2), but not children;
+# shell catches SIGQUIT (3) and returns to single user after fsck.
+trap : 2
+trap : 3       # shouldn't be needed
+
 HOME=/; export HOME
 HOME=/; export HOME
-if [ $1 = autoboot ]
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH
+
+if [ -e /fastboot ]
 then
 then
-       echo Automatic reboot in progress... >/dev/console
-       date >/dev/console
-       /etc/fsck -p >/dev/console
+       echo Fast boot ... skipping disk checks
+elif [ $1x = autobootx ]
+then
+       echo Automatic reboot in progress...
+       fsck -p
        case $? in
        0)
        case $? in
        0)
-               date >/dev/console
+               ;;
+       2)
+               exit 1
                ;;
        4)
                ;;
        4)
-               /etc/reboot -n
+               reboot
+               echo "reboot failed... help!"
+               exit 1
                ;;
        8)
                ;;
        8)
-               echo "Automatic reboot failed... help!" >/dev/console
+               echo "Automatic file system check failed... help!"
                exit 1
                ;;
        12)
                exit 1
                ;;
        12)
-               echo "Reboot interrupted" >/dev/console
+               echo "Reboot interrupted"
+               exit 1
+               ;;
+       130)
+               # interrupt before catcher installed
                exit 1
                ;;
        *)
                exit 1
                ;;
        *)
-               echo "Unknown error in reboot" > /dev/console
+               echo "Unknown error in reboot"
                exit 1
                ;;
        esac
                exit 1
                ;;
        esac
-else
-       date >/dev/console
-fi
-cp /dev/null /etc/mtab
-chmod 666 /etc/motd
-/etc/swapon -a                                                 >/dev/console
-/etc/mount -a                                                  >/dev/console
-                               echo preserving editor files    >/dev/console
-(cd /tmp; /usr/lib/ex3.6preserve -a)
-                               echo clearing /tmp              >/dev/console
-(cd /tmp; rm -f *)
-                               echo -n starting daemons:       >/dev/console
-/etc/update;                   echo -n ' update'               >/dev/console
-/etc/cron;                     echo -n ' cron'                 >/dev/console
-/etc/accton /usr/adm/acct;     echo -n ' accounting'           >/dev/console
-sh /usr/net/bin/start &                echo -n ' network'              >/dev/console
-/etc/comsat;                   echo -n ' mail'                 >/dev/console
-: /usr/lib/dnd > /usr/adm/dndbug
-                               : echo -n ' dialer'             >/dev/console
-cd /usr/spool
-: rm -f lpd/lock; : /usr/lib/lpd;
-                               : echo -n ' printer'            >/dev/console
-: rm -f vpd/lock; : /usr/lib/vpd;
-                               : echo -n ' versatec'           >/dev/console
-: rm -f vad/lock;: /usr/lib/vad;
-                               : echo -n ' varian'             >/dev/console
-                               echo '.'                        >/dev/console
-                               date                            >/dev/console
+fi
+
+trap "echo 'Reboot interrupted'; exit 1" 3
+
+swapon -a
+
+umount -a >/dev/null 2>&1
+mount -a -t nonfs
+rm -f /fastboot                # XXX (root now writeable)
+
+# If the machine runs wall CMOS clock (compatible with MSDOS),
+# activate following line by creating empty file /etc/wall_cmos_clock
+# If this file not exist, following line does nothing (assumed
+# the machine runs UTC CMOS clock). See adjkerntz(8) for details.
+adjkerntz -i
+
+# set hostname, turn on network
+echo 'starting network'
+. /etc/netstart
+
+mount -a -t nfs >/dev/null 2>&1 &      # XXX shouldn't need background
+
+# clean up left-over files
+rm -f /etc/nologin
+rm -f /var/spool/uucp/LCK.*
+rm -f /var/spool/uucp/STST/*
+(cd /var/run && { rm -rf -- *; cp /dev/null utmp; chmod 644 utmp; })
+
+if [ -x /sbin/ldconfig ]; then
+       ldconfig /usr/X386/lib
+fi
+
+echo -n 'starting system logger'
+rm -f /dev/log
+syslogd
+
+# $timedflags is imported from /etc/netstart;
+# if $timedflags == NO, timed isn't run.
+if [ X${timedflags} != X"NO" ]; then
+       echo -n ', time daemon'; timed $timedflags
+fi
+echo '.'
+
+# /var/crash should be a directory or a symbolic link
+# to the crash directory if core dumps are to be saved.
+if [ -d /var/crash ]; then
+       echo checking for core dump...
+       savecore /var/crash
+fi
+
+#                              echo -n 'checking quotas:'
+#quotacheck -a
+#                              echo ' done.'
+#quotaon -a
+
+# build ps databases
+kvm_mkdb /386bsd
+dev_mkdb
+
+chmod 666 /dev/tty[pqrs]*
+
+# check the password temp/lock file
+if [ -f /etc/ptmp ]
+then
+       logger -s -p auth.err \
+       'password file may be incorrect -- /etc/ptmp exists'
+fi
+
+echo preserving editor files
+(cd /var/tmp && /usr/libexec/elvispreserve "-the system rebooted" elvis* &&
+     rm -f elvis[0-9a-f][0-9a-f][0-9a-f][0-9a-f]* \
+        elvis_[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*)
+
+echo clearing /tmp
+
+# prune quickly with one rm, then use find to clean up /tmp/[lq]*
+# (not needed with mfs /tmp, but doesn't hurt there...)
+(cd /tmp && rm -rf [a-km-pr-zA-Z]* &&
+    find . ! -name . ! -name lost+found ! -name quotas -exec rm -rf -- {} \;)
+
+# echo 'turning on accounting';        accton /var/account/acct
+
+echo -n standard daemons:
+echo -n ' crond';              /usr/libexec/crond
+echo '.'
+
+echo -n starting network daemons:
+
+# Portmapper should always be run, to provide RPC services for inetd.
+if [ -x /usr/sbin/portmap ]; then
+       echo -n ' portmap';             portmap
+fi
+
+# $gated and $routedflags are imported from /etc/netstart.
+# If $gated == YES, gated is used; otherwise routed.
+# If $routedflags == NO, routed isn't run.
+if [ X${gated} = X"YES" -a -r /etc/gated.conf ]; then
+       echo -n ' gated';       gated $gatedflags
+elif [ X${routedflags} != X"NO" ]; then
+       echo -n ' routed';      routed $routedflags
+fi
+
+if [ X${name_server} = X"YES" -a -r /etc/named.boot ]; then
+       echo -n ' named';               named
+fi
+
+# $rwhod is imported from /etc/netstart;
+# if $rwhod is set to something other than NO, rwhod is run.
+if [ ${rwhod-NO} != "NO" ]; then
+       echo -n ' rwhod';       rwhod
+fi
+
+echo -n ' printer';            lpd
+
+if [ X${nfs_server} = X"YES" -a -r /etc/exports ]; then
+       echo -n ' mountd';              mountd
+       echo -n ' nfsd';                nfsd -u 0,0,4 -t 0,0
+       echo -n ' nfsiod';              nfsiod 4
+fi
+
+# $sendmail_flags is imported from /etc/netstart;
+# if $sendmail_flags is something other than NO, sendmail is run.
+if [ X"${sendmail_flags}" != X"NO" -a -r /etc/sendmail.cf ]; then
+       echo -n ' sendmail';            sendmail ${sendmail_flags} 
+fi
+
+echo -n ' inetd';              inetd
+echo '.'
+
+sh /etc/rc.local
+
+date
+
 exit 0
 exit 0