rc revision 1.75
19ef7378bSmrg# $NetBSD: rc,v 1.75 1997/04/27 23:17:56 perry Exp $ 2c19de146Smrg# originally from: @(#)rc 8.2 (Berkeley) 3/17/94 39ef7378bSmrg 49ef7378bSmrg# System startup script run by init on autoboot 5c19de146Smrg# or after single-user. 6c19de146Smrg# Output and error are redirected to console by init, 7c19de146Smrg# and the console is the controlling terminal. 8c19de146Smrg 9c19de146Smrgstty status '^T' 10c19de146Smrg 11c19de146Smrg# Set shell to ignore SIGINT (2), but not children; 12c19de146Smrg# shell catches SIGQUIT (3) and returns to single user after fsck. 13c19de146Smrgtrap : 2 149ef7378bSmrgtrap : 3 # shouldn't be needed 159ef7378bSmrg 169ef7378bSmrgexport HOME=/ 179ef7378bSmrgexport PATH=/sbin:/bin:/usr/sbin:/usr/bin 189ef7378bSmrg 199ef7378bSmrg# Configure ccd devices. 209ef7378bSmrgif [ -f /etc/ccd.conf ]; then 21c19de146Smrg ccdconfig -C 229ef7378bSmrgfi 239ef7378bSmrg 249ef7378bSmrgif [ -e /fastboot ]; then 259ef7378bSmrg echo "Fast boot: skipping disk checks." 269ef7378bSmrgelif [ "$1" = autoboot ]; then 27c19de146Smrg echo "Automatic boot in progress: starting file system checks." 28c19de146Smrg fsck -p 29c19de146Smrg case $? in 30c19de146Smrg 0) 31c19de146Smrg ;; 329ef7378bSmrg 2) 339ef7378bSmrg exit 1 349ef7378bSmrg ;; 359ef7378bSmrg 4) 369ef7378bSmrg echo "Rebooting..." 379ef7378bSmrg reboot 389ef7378bSmrg echo "Reboot failed; help!" 399ef7378bSmrg exit 1 409ef7378bSmrg ;; 419ef7378bSmrg 8) 429ef7378bSmrg echo "Automatic file system check failed; help!" 439ef7378bSmrg exit 1 449ef7378bSmrg ;; 459ef7378bSmrg 12) 469ef7378bSmrg echo "Boot interrupted." 47c19de146Smrg exit 1 48c19de146Smrg ;; 49c19de146Smrg 130) 509ef7378bSmrg # interrupt before catcher installed 519ef7378bSmrg exit 1 52c19de146Smrg ;; 539ef7378bSmrg *) 549ef7378bSmrg echo "Unknown error; help!" 559ef7378bSmrg exit 1 569ef7378bSmrg ;; 57c19de146Smrg esac 589ef7378bSmrgfi 59c19de146Smrg 609ef7378bSmrgtrap "echo 'Boot interrupted.'; exit 1" 3 61c19de146Smrg 629ef7378bSmrgswapon -a 639ef7378bSmrg 649ef7378bSmrgumount -a >/dev/null 2>&1 65c19de146Smrgmount -a -t nonfs 66c19de146Smrgrm -f /fastboot # XXX (root now writeable) 67c19de146Smrg 68c19de146Smrgif [ -f /etc/rc.conf ]; then 69c19de146Smrg . /etc/rc.conf 70c19de146Smrgfi 71c19de146Smrg 72c19de146Smrg# set flags on ttys. (do early, in case they use tty for SLIP in netstart) 73c19de146Smrgecho 'setting tty flags' 74c19de146Smrgttyflags -a 75c19de146Smrg 76c19de146Smrg# load any kernel modules specified in /etc/lkm.conf 77c19de146Smrgif [ "$lkm_init" != NO ] && [ -f /etc/rc.lkm ]; then 78c19de146Smrg . /etc/rc.lkm 79c19de146Smrgfi 80c19de146Smrg 81c19de146Smrg# set hostname, turn on network 82c19de146Smrgecho 'starting network' 83c19de146Smrg. /etc/netstart 84c19de146Smrg 85c19de146Smrgmount /usr >/dev/null 2>&1 86c19de146Smrgmount /var >/dev/null 2>&1 87c19de146Smrg 88c19de146Smrg# clean up left-over files 89c19de146Smrgrm -f /etc/nologin 90c19de146Smrgrm -f /var/spool/lock/LCK.* 91c19de146Smrgrm -f /var/spool/uucp/STST/* 92c19de146Smrg(cd /var/run && { rm -rf -- *; install -c -m 664 -g utmp /dev/null utmp; }) 93c19de146Smrg 94c19de146Smrg# start the system logger first, so that all messages 95c19de146Smrg# from daemons are logged, and the name server next. 96c19de146Smrg 97c19de146Smrgif [ "$syslogd_flags" != NO ]; then 98c19de146Smrg if [ "$syslogd_flags" = DEFAULT ]; then 99c19de146Smrg syslogd_flags="" 100c19de146Smrg fi 101c19de146Smrg echo 'starting system logger' 102c19de146Smrg rm -f /dev/log 103c19de146Smrg syslogd $syslogd_flags 1049ef7378bSmrgfi 1059ef7378bSmrg 1069ef7378bSmrgif [ "$named_flags" != NO ]; then 107c19de146Smrg if [ "$named_flags" = DEFAULT ]; then 108c19de146Smrg named_flags="" 109c19de146Smrg fi 110c19de146Smrg echo 'starting name server'; named $named_flags 1119ef7378bSmrgfi 112c19de146Smrg 1139ef7378bSmrg# now start the rpc servers, for YP server/client, NFS. 1149ef7378bSmrgecho -n 'starting rpc daemons:' 1159ef7378bSmrg 1169ef7378bSmrg# note that portmap is generally required for all other rpc services. 1179ef7378bSmrgif [ "$portmap" != NO ]; then 1189ef7378bSmrg echo -n ' portmap'; portmap 119c19de146Smrgfi 1209ef7378bSmrg 121c19de146Smrgif [ "$ypserv_flags" != NO ]; then 1229ef7378bSmrg if [ "$ypserv_flags" = DEFAULT ]; then 1239ef7378bSmrg ypserv_flags="-d" 1249ef7378bSmrg fi 1259ef7378bSmrg echo -n ' ypserv'; ypserv $ypserv_flags 1269ef7378bSmrgfi 1279ef7378bSmrg 1289ef7378bSmrgif [ "$ypbind_flags" != NO ]; then 1299ef7378bSmrg if [ "$ypbind_flags" = DEFAULT ]; then 1309ef7378bSmrg ypbind_flags="" 1319ef7378bSmrg fi 1329ef7378bSmrg echo -n ' ypbind'; ypbind $ypbind_flags 1339ef7378bSmrgfi 1349ef7378bSmrg 1359ef7378bSmrgif [ "$yppasswdd_flags" != NO ]; then 1369ef7378bSmrg if [ "$yppasswdd_flags" = DEFAULT ]; then 137c19de146Smrg yppasswdd_flags="" 1389ef7378bSmrg fi 1399ef7378bSmrg echo -n ' rpc.yppasswdd'; rpc.yppasswdd $yppasswdd_flags 140c19de146Smrgfi 1419ef7378bSmrg 1429ef7378bSmrgif [ "$bootparamd_flags" != NO ] && [ -r /etc/bootparams ]; then 1439ef7378bSmrg if [ "$bootparamd_flags" = DEFAULT ]; then 1449ef7378bSmrg bootparamd_flags="" 1459ef7378bSmrg fi 146c19de146Smrg echo -n ' rpc.bootparamd'; rpc.bootparamd $bootparamd_flags 1479ef7378bSmrgfi 1489ef7378bSmrg 1499ef7378bSmrgnfs_locking=NO 1509ef7378bSmrg 1519ef7378bSmrgif [ "$nfs_server" = YES ] && [ -r /etc/exports ]; then 1529ef7378bSmrg if [ "$mountd_flags" = DEFAULT ]; then 153c19de146Smrg mountd_flags="" 1549ef7378bSmrg fi 155c19de146Smrg rm -f /var/db/mountdtab 156c19de146Smrg echo -n > /var/db/mountdtab 157c19de146Smrg echo -n ' mountd'; mountd $mountd_flags 158c19de146Smrg if [ "$nfsd_flags" = DEFAULT ]; then 159c19de146Smrg nfsd_flags="-tun 4" 160c19de146Smrg fi 161c19de146Smrg echo -n ' nfsd'; nfsd $nfsd_flags 162c19de146Smrg nfs_locking=MAYBE 163c19de146Smrgfi 164c19de146Smrg 165c19de146Smrgif [ "$nfs_client" = YES ]; then 166c19de146Smrg if [ "$nfsiod_flags" = DEFAULT ]; then 167c19de146Smrg nfsiod_flags="-n 4" 168c19de146Smrg fi 169c19de146Smrg echo -n ' nfsiod'; nfsiod $nfsiod_flags 170c19de146Smrg nfs_locking=MAYBE 171c19de146Smrgfi 172c19de146Smrg 173c19de146Smrgif [ "$nfs_locking" != NO ]; then 174c19de146Smrg if [ "$statd_flags" != NO ]; then 175c19de146Smrg if [ "$statd_flags" = DEFAULT ]; then 176c19de146Smrg statd_flags="" 177c19de146Smrg fi 178c19de146Smrg echo -n ' rpc.statd'; rpc.statd $statd_flags 179c19de146Smrg fi 180c19de146Smrg 181c19de146Smrg if [ "$lockd_flags" != NO ]; then 1829ef7378bSmrg if [ "$lockd_flags" = DEFAULT ]; then 183c19de146Smrg lockd_flags="" 184c19de146Smrg fi 185c19de146Smrg echo -n ' rpc.lockd'; rpc.lockd $lockd_flags 186c19de146Smrg fi 187c19de146Smrgfi 188c19de146Smrg 189c19de146Smrgif [ "$amd_flags" != NO ] && [ -d "$amd_dir" -a -r "$amd_master" ]; then 190c19de146Smrg if [ "$amd_flags" = DEFAULT ]; then 191c19de146Smrg amd_flags="-l syslog -x error,noinfo,nostats" 192c19de146Smrg fi 193c19de146Smrg echo -n ' amd' 194c19de146Smrg amd $amd_flags -p -a $amd_dir `cat $amd_master` > /var/run/amd.pid 195c19de146Smrgfi 196c19de146Smrg 197c19de146Smrgecho '.' 198c19de146Smrgmount -a -t nfs 199c19de146Smrg 200c19de146Smrgif [ -f /sbin/ldconfig ]; then 201c19de146Smrg echo 'creating runtime link editor directory cache.' 202c19de146Smrg if [ -f /etc/ld.so.conf ]; then 203c19de146Smrg ldconfig `cat /etc/ld.so.conf` 204c19de146Smrg else 205c19de146Smrg ldconfig 206c19de146Smrg fi 207c19de146Smrgfi 208c19de146Smrg 209c19de146Smrg# /var/crash should be a directory or a symbolic link 210c19de146Smrg# to the crash directory if core dumps are to be saved. 2119ef7378bSmrgif [ "$savecore_flags" != NO ] && [ -d /var/crash ]; then 2129ef7378bSmrg if [ "$savecore_flags" = DEFAULT ]; then 2139ef7378bSmrg savecore_flags="" 2149ef7378bSmrg fi 2159ef7378bSmrg echo checking for core dump... 2169ef7378bSmrg savecore $savecore_flags /var/crash 2179ef7378bSmrgfi 2189ef7378bSmrg 2199ef7378bSmrg echo -n 'checking quotas:' 2209ef7378bSmrgquotacheck -a 221c19de146Smrg echo ' done.' 222c19de146Smrgquotaon -a 223c19de146Smrg 224c19de146Smrg# build ps databases 225c19de146Smrgecho 'building databases...' 226c19de146Smrgkvm_mkdb /netbsd 227c19de146Smrgdev_mkdb 228c19de146Smrg 229c19de146Smrgchmod 666 /dev/tty[pqrs]* 230c19de146Smrg 231c19de146Smrg# check the password temp/lock file 2329ef7378bSmrgif [ -f /etc/ptmp ] 2339ef7378bSmrgthen 2349ef7378bSmrg logger -s -p auth.err \ 235c19de146Smrg 'password file may be incorrect -- /etc/ptmp exists' 236c19de146Smrgfi 237c19de146Smrg 2389ef7378bSmrgvirecovery=/var/tmp/vi.recover/recover.* 2399ef7378bSmrgif [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then 2409ef7378bSmrg echo preserving editor files 2419ef7378bSmrg for i in $virecovery; do 2429ef7378bSmrg sendmail -t < $i 2439ef7378bSmrg done 244c19de146Smrgfi 2459ef7378bSmrg 2469ef7378bSmrgecho clearing /tmp 2479ef7378bSmrg 2489ef7378bSmrg# Prune quickly with one rm, then use find to clean up /tmp/[lq]* (this 249c19de146Smrg# is not needed with mfs /tmp, but doesn't hurt anything). 250c19de146Smrg(cd /tmp && rm -rf [a-km-pr-zA-Z]* && 251c19de146Smrg find . ! -name . ! -name lost+found ! -name quota.user \ 252c19de146Smrg ! -name quota.group -exec rm -rf -- {} \; -type d -prune) 253c19de146Smrg 254c19de146Smrg# Update kernel info in /etc/motd 255c19de146Smrg# Must be done *before* interactive logins are possible to prevent 256c19de146Smrg# possible race conditions. 257c19de146Smrgif [ "$update_motd" != NO ]; then 2589ef7378bSmrg echo 'updating motd.' 2599ef7378bSmrg if [ ! -f /etc/motd ]; then 2609ef7378bSmrg install -c -o root -g wheel -m 664 /dev/null /etc/motd 2619ef7378bSmrg fi 2629ef7378bSmrg T=/tmp/_motd 2639ef7378bSmrg rm -f $T 2649ef7378bSmrg sysctl -n kern.version | sed 1q > $T 265c19de146Smrg echo "" >> $T 266c19de146Smrg sed '1,/^$/d' < /etc/motd >> $T 267c19de146Smrg cmp -s $T /etc/motd || cp $T /etc/motd 2689ef7378bSmrg rm -f $T 269c19de146Smrgfi 2709ef7378bSmrg 271c19de146Smrgif [ -f /var/account/acct ]; then 2729ef7378bSmrg echo 'turning on accounting'; accton /var/account/acct 273c19de146Smrgfi 2749ef7378bSmrg 275c19de146Smrgecho -n standard daemons: 276c19de146Smrgif [ "$update_flags" != NO ]; then 2779ef7378bSmrg if [ "$update_flags" = DEFAULT ]; then 2789ef7378bSmrg update_flags="30" 2799ef7378bSmrg fi 2809ef7378bSmrg echo -n ' update'; update $update_flags 2819ef7378bSmrgfi 2829ef7378bSmrgecho -n ' cron'; cron 2839ef7378bSmrgecho '.' 2849ef7378bSmrg 285c19de146Smrg# now start all the other daemons 286c19de146Smrgecho -n starting network daemons: 287c19de146Smrg 288c19de146Smrgif [ "$gated_flags" != NO ] && [ -r /etc/gated.conf ]; then 289c19de146Smrg if [ "$gated_flags" = DEFAULT ]; then 290c19de146Smrg gated_flags="" 291c19de146Smrg fi 292c19de146Smrg echo -n ' gated'; gated $gated_flags 293c19de146Smrgelif [ "$routed_flags" != NO ]; then 294c19de146Smrg if [ "$routed_flags" = DEFAULT ]; then 295c19de146Smrg routed_flags="-q" 296c19de146Smrg fi 297c19de146Smrg echo -n ' routed'; routed $routed_flags 298c19de146Smrgfi 299c19de146Smrg 300c19de146Smrgif [ "$mrouted_flags" != NO ]; then 301c19de146Smrg if [ "$mrouted_flags" = DEFAULT ]; then 302c19de146Smrg mrouted_flags="" 303c19de146Smrg fi 304c19de146Smrg echo -n ' mrouted'; mrouted $mrouted_flags 305c19de146Smrgfi 306c19de146Smrg 307c19de146Smrgif [ "$timed_flags" != NO ]; then 308c19de146Smrg if [ "$timed_flags" = DEFAULT ]; then 309c19de146Smrg timed_flags="" 310c19de146Smrg fi 311c19de146Smrg echo -n ' timed'; timed $timed_flags 312c19de146Smrgfi 313c19de146Smrg 314c19de146Smrgif [ "$ntpdate_hosts" != NO ]; then 315c19de146Smrg if [ "$ntpdate_hosts" = DEFAULT ]; then 316c19de146Smrg ntpdate_hosts=`awk '/^server/ {print $2}' </etc/ntp.conf` 317c19de146Smrg fi 3189ef7378bSmrg 3199ef7378bSmrg if [ -n "$ntpdate_hosts" ]; then 320c19de146Smrg echo -n 'ntpdate:' 321c19de146Smrg ntpdate -b $ntpdate_hosts 322c19de146Smrg fi 323c19de146Smrgfi 324c19de146Smrg 3259ef7378bSmrgif [ "$xntpd_flags" != NO ]; then 3269ef7378bSmrg if [ "$xntpd_flags" = DEFAULT ]; then 327c19de146Smrg xntpd_flags="" 328c19de146Smrg fi 3299ef7378bSmrg echo -n ' xntpd'; xntpd $xntpd_flags 330c19de146Smrgfi 3319ef7378bSmrg 3329ef7378bSmrgif [ "$dhcpd_flags" != NO ] && [ -r /etc/dhcpd.conf ]; then 3339ef7378bSmrg if [ "$dhcpd_flags" = DEFAULT ]; then 3349ef7378bSmrg dhcpd_flags="" 3359ef7378bSmrg fi 3369ef7378bSmrg echo -n ' dhcpd'; dhcpd $dhcpd_flags 337c19de146Smrgfi 3389ef7378bSmrg 339c19de146Smrgif [ "$rwhod" = YES ]; then 340c19de146Smrg echo -n ' rwhod'; rwhod 341c19de146Smrgfi 342c19de146Smrg 3439ef7378bSmrgif [ "$lpd_flags" != NO ]; then 3449ef7378bSmrg if [ "$lpd_flags" = DEFAULT ]; then 3459ef7378bSmrg lpd_flags="" 3469ef7378bSmrg fi 3479ef7378bSmrg echo -n ' printer'; lpd $lpd_flags 3489ef7378bSmrgfi 3499ef7378bSmrg 3509ef7378bSmrg# We call sendmail with a full path so that SIGHUP works. 3519ef7378bSmrgif [ "$sendmail_flags" != NO ] && [ -r /etc/sendmail.cf ]; then 3529ef7378bSmrg if [ "$sendmail_flags" = DEFAULT ]; then 3539ef7378bSmrg sendmail_flags="-bd -q30m" 3549ef7378bSmrg fi 3559ef7378bSmrg echo -n ' sendmail'; /usr/sbin/sendmail $sendmail_flags 3569ef7378bSmrgfi 3579ef7378bSmrg 3589ef7378bSmrgif [ "$rarpd_flags" != NO ] && [ -r /etc/ethers ]; then 3599ef7378bSmrg if [ "$rarpd_flags" = DEFAULT ]; then 3609ef7378bSmrg rarpd_flags="-a" 3619ef7378bSmrg fi 3629ef7378bSmrg echo -n ' rarpd'; rarpd $rarpd_flags 3639ef7378bSmrgfi 3649ef7378bSmrg 3659ef7378bSmrgif [ "$rbootd_flags" != NO ] && [ -r /etc/rbootd.conf ]; then 3669ef7378bSmrg if [ "$rbootd_flags" = DEFAULT ]; then 3679ef7378bSmrg rbootd_flags="" 3689ef7378bSmrg fi 3699ef7378bSmrg echo -n ' rbootd'; rbootd $rbootd_flags 3709ef7378bSmrgfi 3719ef7378bSmrg 3729ef7378bSmrgif [ "$mopd_flags" != NO ]; then 3739ef7378bSmrg if [ "$mopd_flags" = DEFAULT ]; then 3749ef7378bSmrg mopd_flags="-a" 3759ef7378bSmrg fi 3769ef7378bSmrg echo -n ' mopd'; mopd $mopd_flags 3779ef7378bSmrgfi 3789ef7378bSmrg 3799ef7378bSmrgif [ "$inetd_flags" != NO ] && [ -r /etc/inetd.conf ]; then 3809ef7378bSmrg if [ "$inetd_flags" = DEFAULT ]; then 3819ef7378bSmrg inetd_flags="" 3829ef7378bSmrg fi 3839ef7378bSmrg echo -n ' inetd'; inetd $inetd_flags 3849ef7378bSmrgfi 3859ef7378bSmrg 3869ef7378bSmrgecho '.' 3879ef7378bSmrg 3889ef7378bSmrg# Kerberos runs ONLY on the Kerberos server machine 3899ef7378bSmrgif [ "$kerberos_server" = YES ]; then 3909ef7378bSmrg echo -n 'starting kerberos daemons:' 391c19de146Smrg echo -n ' kerberos'; kerberos >> /var/log/kerberos.log & 3929ef7378bSmrg echo -n ' kadmind'; kadmind -n >> /var/log/kadmind.log & 393c19de146Smrg echo '.' 394c19de146Smrgfi 395c19de146Smrg 396c19de146Smrg. /etc/rc.local 397c19de146Smrg 398c19de146Smrgdate 399c19de146Smrgexit 0 400c19de146Smrg