NetBSD/etc/rc
mrg 3b98afb4c5 move start-time configuration from netstart, rc, rc.local into
the new /etc/rc.conf.  this also includes the following changes:

	netstart:  ifaliases now includes a netmask, to ensure
		   aliases work.

	rc/rc.local:  make _everything_ based on configuration
	in rc.conf.  also move things around such that DNS and
	YP are started early enough that other daemons needing
	their services also exist.  move ldconfig from rc.local
	here, and also make it use /etc/ld.so.conf if it exists.
	run /etc/rc.lkm if it exists, a boot time.
1997-01-05 12:01:54 +00:00

273 lines
6.0 KiB
Plaintext

# $NetBSD: rc,v 1.63 1997/01/05 12:01:55 mrg Exp $
# from: @(#)rc 8.2 (Berkeley) 3/17/94
# 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
PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH
# Configure ccd devices.
if [ -f /etc/ccd.conf ]; then
ccdconfig -C
fi
if [ -e /fastboot ]; then
echo "Fast boot: skipping disk checks."
elif [ $1x = autobootx ]; then
echo "Automatic boot in progress: starting file system checks."
fsck -p
case $? in
0)
;;
2)
exit 1
;;
4)
echo "Rebooting..."
reboot
echo "Reboot failed; help!"
exit 1
;;
8)
echo "Automatic file system check failed; help!"
exit 1
;;
12)
echo "Boot interrupted."
exit 1
;;
130)
# interrupt before catcher installed
exit 1
;;
*)
echo "Unknown error; help!"
exit 1
;;
esac
fi
trap "echo 'Boot interrupted.'; exit 1" 3
swapon -a
umount -a >/dev/null 2>&1
mount -a -t nonfs
rm -f /fastboot # XXX (root now writeable)
if [ -s /etc/rc.conf ]; then
. /etc/rc.conf
fi
# set flags on ttys. (do early, in case they use tty for SLIP in netstart)
echo 'setting tty flags'
ttyflags -a
# load any kernel modules specified in /etc/lkm.conf
if [ X"$lkm_init" != XNO -a -f /etc/rc.lkm ]; then
. /etc/rc.lkm
fi
# set hostname, turn on network
echo 'starting network'
. /etc/netstart
mount /usr >/dev/null 2>&1
mount /var >/dev/null 2>&1
# clean up left-over files
rm -f /etc/nologin
rm -f /var/spool/lock/LCK.*
rm -f /var/spool/uucp/STST/*
(cd /var/run && { rm -rf -- *; install -c -m 664 -g utmp /dev/null utmp; })
# start the system logger first, so that all messages
# from daemons are logged, and the name server next.
if [ "X$syslogd_flags" != XNO ]; then
echo 'starting system logger'
rm -f /dev/log
syslogd $syslogd_flags
fi
if [ "X$named_flags" != XNO ]; then
echo 'starting name server'; named $named_flags
fi
# now start the rpc servers, for YP server/client, NFS.
echo -n 'starting rpc daemons:'
# note that portmap is generally required for all other rpc services.
if [ "X$portmap" != XNO ]; then
echo -n ' portmap'; portmap
fi
if [ "X$ypserv_flags" != XNO ]; then
echo -n ' ypserv'; ypserv $ypserv_flags
fi
if [ "X$ypbind_flags" != XNO ]; then
echo -n ' ypbind'; ypbind $ypbind_flags
fi
if [ "X$yppasswdd_flags" != XNO ]; then
echo -n ' rpc.yppasswdd'; rpc.yppasswdd $yppasswdd_flags
fi
if [ "X$bootparamd_flags" != XNO -a -r /etc/bootparams ]; then
echo -n ' rpc.bootparamd'; rpc.bootparamd $bootparamd_flags
fi
if [ "X$nfs_server" = XYES -a -r /etc/exports ]; then
if [ "X$nfsd_flags" = X ]; then
nfsd_flags="-tun 4"
fi
rm -f /var/db/mountdtab
echo -n > /var/db/mountdtab
echo -n ' mountd'; mountd $mountd_flags
echo -n ' nfsd'; nfsd $nfsd_flags
fi
if [ "X$nfs_client" = XYES ]; then
if [ "X$nfsiod_flags" = X ]; then
nfsiod_flags="-n 4"
fi
echo -n ' nfsiod'; nfsiod $nfsiod_flags
fi
if [ "X$amd" = XYES -a -d "$amd_dir" -a -r "$amd_master" ]; then
echo -n ' amd'
amd $amd_flags -p -a $amd_dir `cat $amd_master` > /var/run/amd.pid
fi
echo '.'
mount -a -t nfs
if [ -f /sbin/ldconfig ]; then
echo 'creating runtime link editor directory cache.'
if [ -s /etc/ld.so.conf ]; then
ldconfig `cat /etc/ld.so.conf`
else
ldconfig
fi
fi
# /var/crash should be a directory or a symbolic link
# to the crash directory if core dumps are to be saved.
if [ X"savecore_flags" != XNO -a -d /var/crash ]; then
echo checking for core dump...
savecore $savecore_flags /var/crash
fi
echo -n 'checking quotas:'
quotacheck -a
echo ' done.'
quotaon -a
# build ps databases
echo 'building databases...'
kvm_mkdb /netbsd
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
virecovery=/var/tmp/vi.recover/recover.*
if [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then
echo preserving editor files
for i in $virecovery; do
sendmail -t < $i
done
fi
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 quota.user \
! -name quota.group -exec rm -rf -- {} \; -type d -prune)
if [ -f /var/account/acct ]; then
echo 'turning on accounting'; accton /var/account/acct
fi
echo -n standard daemons:
echo -n ' update'; update
echo -n ' cron'; cron
echo '.'
# now start all the other daemons
echo -n starting network daemons:
if [ X$gated_flags != XNO -a -r /etc/gated.conf ]; then
echo -n ' gated'; gated $gated_flags
elif [ "X$routed_flags" != XNO ]; then
echo -n ' routed'; routed $routed_flags
fi
if [ "X$mrouted_flags" != XNO ]; then
echo -n ' mrouted'; mrouted $mrouted_flags
fi
if [ "X$timed_flags" != XNO ]; then
echo -n ' time daemon'; timed $timed_flags
fi
if [ "X$xntpd_flags" != XNO ]; then
echo -n ' ntp daemon'; xntpd $xntpd_flags
fi
if [ "X$dhcpd_flags" != XNO -a -r /etc/dhcpd.conf ]; then
echo -n ' dhcpd'; dhcpd $dhcpd_flags
fi
if [ X$rwhod = XYES ]; then
echo -n ' rwhod'; rwhod
fi
if [ "X$lpd_flags" != XNO ]; then
echo -n ' printer'; lpd $lpd_flags
fi
# We call sendmail with a full path so that SIGHUP works.
if [ "X$sendmail_flags" != XNO -a -r /etc/sendmail.cf ]; then
echo -n ' sendmail'; /usr/sbin/sendmail $sendmail_flags
fi
if [ "X$rarpd_flags" != XNO -a -r /etc/ethers ]; then
echo -n ' rarpd'; rarpd $rarpd_flags
fi
if [ "X$rbootd_flags" != XNO -a -r /etc/rbootd.conf ]; then
echo -n ' rbootd'; rbootd $rbootd_flags
fi
if [ "X$inetd_flags" != XNO -a -r /etc/inetd.conf ]; then
echo -n ' inetd'; inetd $inetd_flags
fi
echo '.'
. /etc/rc.local
date
exit 0