rc revision 1.2
1533545b5Smrg# @(#)rc 5.27 (Berkeley) 6/5/91 2533545b5Smrg 3533545b5Smrg# System startup script run by init on autoboot 4264fa531Smrg# or after single-user. 5264fa531Smrg# Output and error are redirected to console by init, 6264fa531Smrg# and the console is the controlling terminal. 7264fa531Smrg 8264fa531Smrgstty status '^T' 9264fa531Smrg 10264fa531Smrg# Set shell to ignore SIGINT (2), but not children; 11264fa531Smrg# shell catches SIGQUIT (3) and returns to single user after fsck. 12264fa531Smrgtrap : 2 13264fa531Smrgtrap : 3 # shouldn't be needed 14533545b5Smrg 15c37a63b8SmrgHOME=/; export HOME 16c37a63b8SmrgPATH=/sbin:/bin:/usr/sbin:/usr/bin 17533545b5Smrgexport PATH 18533545b5Smrg 19c37a63b8Smrgif [ -r /fastboot ] 20c37a63b8Smrgthen 21533545b5Smrg echo Fast boot ... skipping disk checks 22264fa531Smrgelif [ $1x = autobootx ] 23533545b5Smrgthen 24c37a63b8Smrg echo Automatic reboot in progress... 25c37a63b8Smrg fsck -p 26c37a63b8Smrg case $? in 27c37a63b8Smrg 0) 28264fa531Smrg ;; 29264fa531Smrg 2) 30264fa531Smrg exit 1 31264fa531Smrg ;; 32264fa531Smrg 4) 33c37a63b8Smrg reboot 34c37a63b8Smrg echo "reboot failed... help!" 35533545b5Smrg exit 1 36c37a63b8Smrg ;; 37c37a63b8Smrg 8) 38533545b5Smrg echo "Automatic file system check failed... help!" 39c37a63b8Smrg exit 1 40c37a63b8Smrg ;; 41c37a63b8Smrg 12) 42c37a63b8Smrg echo "Reboot interrupted" 43c37a63b8Smrg exit 1 44c37a63b8Smrg ;; 45c37a63b8Smrg 130) 46c37a63b8Smrg # interrupt before catcher installed 47c37a63b8Smrg exit 1 48264fa531Smrg ;; 49264fa531Smrg *) 50264fa531Smrg echo "Unknown error in reboot" 51c37a63b8Smrg exit 1 52c37a63b8Smrg ;; 53264fa531Smrg esac 54533545b5Smrgfi 55c37a63b8Smrg 56c37a63b8Smrgtrap "echo 'Reboot interrupted'; exit 1" 3 57c37a63b8Smrg 58264fa531Smrgswapon -a 59c37a63b8Smrg 60264fa531Smrgumount -a >/dev/null 2>&1 61533545b5Smrgmount -a -t nonfs 62264fa531Smrgrm -f /fastboot # XXX (root now writeable) 63c37a63b8Smrg 64c37a63b8Smrg# set hostname, turn on network 65c37a63b8Smrgecho 'starting network' 66264fa531Smrg. /etc/netstart 67264fa531Smrg 68533545b5Smrgmount -a -t nfs >/dev/null 2>&1 & # XXX shouldn't need background 69533545b5Smrg 70264fa531Smrg# clean up left-over files 71264fa531Smrgrm -f /etc/nologin 72264fa531Smrgrm -f /var/spool/uucp/LCK.* 73264fa531Smrgrm -f /var/spool/uucp/STST/* 74264fa531Smrg(cd /var/run && { rm -rf -- *; cp /dev/null utmp; chmod 644 utmp; }) 75264fa531Smrg 76264fa531Smrgecho -n 'starting system logger' 77264fa531Smrgrm -f /dev/log 78264fa531Smrgsyslogd 79264fa531Smrg 80264fa531Smrg# $timedflags is imported from /etc/netstart; 81264fa531Smrg# if $timedflags == NO, timed isn't run. 82264fa531Smrgif [ X${timedflags} != X"NO" ]; then 83264fa531Smrg echo -n ', time daemon'; timed $timedflags 84264fa531Smrgfi 85264fa531Smrgecho '.' 86264fa531Smrg 87264fa531Smrg# /var/crash should be a directory or a symbolic link 88533545b5Smrg# to the crash directory if core dumps are to be saved. 89264fa531Smrgif [ -d /var/crash ]; then 90264fa531Smrg echo checking for core dump... 91264fa531Smrg savecore /var/crash 92264fa531Smrgfi 93264fa531Smrg 94264fa531Smrg# echo -n 'checking quotas:' 95264fa531Smrg#quotacheck -a 96264fa531Smrg# echo ' done.' 97264fa531Smrg#quotaon -a 98264fa531Smrg 99264fa531Smrg# build ps databases 100264fa531Smrgecho 'building databases...' 101264fa531Smrgkvm_mkdb /386bsd 102264fa531Smrgdev_mkdb 103264fa531Smrg 104264fa531Smrgchmod 666 /dev/tty[pqrs]* 105c37a63b8Smrg 106533545b5Smrg# check the password temp/lock file 107533545b5Smrgif [ -f /etc/ptmp ] 108533545b5Smrgthen 109264fa531Smrg logger -s -p auth.err \ 110264fa531Smrg 'password file may be incorrect -- /etc/ptmp exists' 111c37a63b8Smrgfi 112264fa531Smrg 113533545b5Smrgecho preserving editor files 114c37a63b8Smrg(cd /var/tmp && /usr/libexec/elvispreserve "-the system rebooted" elvis* && 115c37a63b8Smrg rm -f elvis[0-9a-f][0-9a-f][0-9a-f][0-9a-f]* \ 116c37a63b8Smrg elvis_[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*) 117c37a63b8Smrg 118264fa531Smrgecho clearing /tmp 119c37a63b8Smrg 120c37a63b8Smrg# prune quickly with one rm, then use find to clean up /tmp/[lq]* 121c37a63b8Smrg# (not needed with mfs /tmp, but doesn't hurt there...) 122c37a63b8Smrg(cd /tmp && rm -rf [a-km-pr-zA-Z]* && 123533545b5Smrg find . ! -name . ! -name lost+found ! -name quotas -exec rm -rf -- {} \;) 124533545b5Smrg 125533545b5Smrg# echo 'turning on accounting'; accton /var/account/acct 126c37a63b8Smrg 127c37a63b8Smrgecho -n standard daemons: 128c37a63b8Smrgecho -n ' update'; update 129c37a63b8Smrgecho -n ' crond'; /usr/libexec/crond 130c37a63b8Smrgecho '.' 131c37a63b8Smrg 132c37a63b8Smrgecho -n starting network daemons: 133c37a63b8Smrg 134264fa531Smrg# $gated and $routedflags are imported from /etc/netstart. 135c37a63b8Smrg# If $gated == YES, gated is used; otherwise routed. 136c37a63b8Smrg# If $routedflags == NO, routed isn't run. 137264fa531Smrgif [ X${gated} = X"YES" -a -r /etc/gated.conf ]; then 138c37a63b8Smrg echo -n ' gated'; gated $gatedflags 139c37a63b8Smrgelif [ X${routedflags} != X"NO" ]; then 140c37a63b8Smrg echo -n ' routed'; routed $routedflags 141c37a63b8Smrgfi 142c37a63b8Smrg 143264fa531Smrgif [ X${name_server} = X"YES" -a -r /etc/named.boot ]; then 144533545b5Smrg echo -n ' named'; named 145c37a63b8Smrgfi 146c37a63b8Smrg 147c37a63b8Smrg# $rwhod is imported from /etc/netstart; 148c37a63b8Smrg# if $rwhod == YES, rwhod is run. 149264fa531Smrgif [ X${rwhod} != X"YES" ]; then 150264fa531Smrg echo -n ' rwhod'; rwhod 151533545b5Smrgfi 152264fa531Smrg 153264fa531Smrgecho -n ' printer'; lpd 154264fa531Smrg 155264fa531Smrg 156264fa531Smrgif [ X${nfs_server} = X"YES" -a -r /etc/exports ]; then 157264fa531Smrg echo -n ' portmap'; portmap 158264fa531Smrg echo -n ' mountd'; mountd 159264fa531Smrg echo -n ' nfsd'; nfsd -u 0,0,4 -t 0,0 160264fa531Smrg echo -n ' nfsiod'; nfsiod 4 161533545b5Smrgfi 162264fa531Smrg 163264fa531Smrgecho -n ' sendmail'; sendmail -bd -q30m 164264fa531Smrgecho -n ' inetd'; inetd 165264fa531Smrgecho '.' 166264fa531Smrg 167264fa531Smrgsh /etc/rc.local 168264fa531Smrg 169264fa531Smrgdate 170264fa531Smrg 171264fa531Smrgexit 0 172264fa531Smrg