1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-16 10:20:30 +00:00
freebsd/etc/rc
Jordan K. Hubbard e017475bed Begin a long-overdue cleanup of this whole mess.
1. Move all system configuration variables into /etc/sysconfig
2. Adapt other files to use it.
3. Add a host of new variables for micro-managing your system in various
   ways.  For 2.1, /etc/sysconfig will be machine-edited so that the user
   doesn't even have to care at all about the various funny names we picked.
4. Enable dset.  We won't get it debugged if we never use it, and no one
   has said anything negative about it yet, so here goes!
5. Try to use one consistent style throughout.
1995-03-21 15:20:48 +00:00

285 lines
6.7 KiB
Bash

#!/bin/sh
# $Id: rc,v 1.47 1995/03/17 17:57:24 rgrimes 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
PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH
swapon -a
if [ $1x = autobootx ]
then
echo Automatic reboot in progress...
fsck -p
case $? in
0)
;;
2)
exit 1
;;
4)
reboot
echo "reboot failed... help!"
exit 1
;;
8)
echo "Automatic file system check failed... help!"
exit 1
;;
12)
echo "Reboot interrupted"
exit 1
;;
130)
# interrupt before catcher installed
exit 1
;;
*)
echo "Unknown error in reboot"
exit 1
;;
esac
else
echo Skipping disk checks ...
fi
trap "echo 'Reboot interrupted'; exit 1" 3
# root must be read/write both for NFS diskless and for VFS LKMs before
# proceeding any further.
mount -u -o rw /
umount -a >/dev/null 2>&1
mount -a -t nonfs
# 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
# If there is a global system configuration file, suck it in.
if [ -f /etc/sysconfig ]; then
. /etc/sysconfig
fi
# configure serial devices
if [ -f /etc/rc.serial ]; then
sh /etc/rc.serial
fi
# set hostname, turn on network
echo 'starting network'
. /etc/netstart
# clean up left-over files
rm -f /etc/nologin
rm -f /var/spool/lock/*
rm -f /var/spool/uucp/.Temp/*
(cd /var/run && { rm -rf -- *; cp /dev/null utmp; chmod 644 utmp; })
echo -n ' 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 [ "X${savecore}" = X"YES" -a -d /var/crash ]; then
echo; echo -n checking for core dump...
savecore /var/crash
echo done.
fi
if [ "X${check_quotas}" = X"YES" ]; then
echo ' checking quotas:'
quotacheck -a
echo ' done.'
quotaon -a
fi
# build ps databases
kvm_mkdb
dev_mkdb
# snapshot any kernel -c changes back to disk
/sbin/dset -q
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
# Recover vi editor files.
virecovery=/var/tmp/vi.recover/recover.*
if [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then
echo 'Recovering vi editor sessions'
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 -d . ! -name . ! -name lost+found ! -name quotas -exec rm -rf -- {} \;)
if [ "X${accounting}" = X"YES" -a -d /var/account ]; then
echo 'turning on accounting'; accton /var/account/acct
fi
echo -n standard daemons:
echo -n ' cron'; cron
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/namedb/named.boot ]; then
echo -n ' named'; named -b /etc/namedb/named.boot
fi
# $ntpdate and $xntpdflags are imported from /etc/netstart.
# If $ntpdate != NO, run ntpdate $ntpdate to set the date correctly.
# If $xntpdflags != NO, start xntpd.
if [ "X${ntpdate}" != X"NO" -o "X${xntpdflags}" != X"NO" ]; then
if [ "X${tickadjflags}" != X"NO" ]; then
echo -n ' tickadj'; tickadj ${tickadjflags--Aq}
fi
if [ "X${ntpdate}" != X"NO" ]; then
echo -n ' ntpdate'; ntpdate ${ntpdate}
fi
if [ "X${xntpdflags}" != X"NO" ]; then
echo -n ' xntpd'; xntpd ${xntpdflags}
fi
fi
# $rwhod is imported from /etc/netstart;
# if $rwhod is set to YES, rwhod is run.
if [ "X${rwhod}" = X"YES" ]; 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 -t 4
fi
if [ "X${nfs_client}" = X"YES" ]; then
echo -n ' nfsiod'; nfsiod -n 4
fi
if [ "X${amdflags}" != X"NO" ]; then
echo -n ' amd'; amd ${amdflags}
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
# Kerberos runs ONLY on the Kerberos server machine
if [ "X${kerberos_server}" = X"YES" ]; then
echo -n ' kerberos'; kerberos >> /var/log/kerberos.log &
echo -n ' kadmind'; \
(sleep 20; /usr/sbin/kadmind -n >/dev/null 2>&1 &) &
fi
# Start ypserv if we're an NIS server.
# Run yppasswdd only on the NIS master server
if [ "X${nis_serverflags}" != X"NO" ]; then
echo -n ' ypserv'; ypserv ${nis_serverflags}
if [ "X${yppasswddflags}" != X"NO" ]; then
echo -n ' yppasswdd'; yppasswdd ${yppasswddflags}
fi
fi
# Start ypbind if we're an NIS client
if [ "X${nis_clientflags}" != X"NO" ]; then
echo -n ' ypbind'; ypbind ${nis_clientflags}
fi
echo -n ' inetd'; inetd
echo '.'
mount -a -t nfs >/dev/null 2>&1 & # XXX shouldn't need background
if [ "X${xtend}" != X"NO" -a -x /usr/libexec/xtend ]; then
echo -n ' xtend'; /usr/libexec/xtend
fi
# Make shared lib searching a little faster. Leave /usr/lib first if you
# add your own entries or you may come to grief.
if [ -x /sbin/ldconfig ]; then
_LDC=/usr/lib
if [ -d /usr/X11R6/lib ]; then _LDC="${_LDC} /usr/X11R6/lib" ; fi
if [ -d /usr/X386/lib ]; then _LDC="${_LDC} /usr/X386/lib" ; fi
if [ -d /usr/local/lib ]; then _LDC="${_LDC} /usr/local/lib" ; fi
if [ -d /usr/gnu/lib ]; then _LDC="${_LDC} /usr/gnu/lib" ; fi
echo 'setting ldconfig path:' ${_LDC}
ldconfig ${_LDC}
fi
# Syscons screen saver
if [ "X${saver}" != X"NO" ] ; then
echo -n "syscons screensaver: "
modload -u -o /tmp/saver_mod -e saver_init -q /lkm/${saver}_saver_mod.o
fi
# Syscons keymap
if [ "X${keymap}" != X"NO" ]; then
echo -n "syscons keymap: "
kbdcontrol -l ${KEYMAP}
fi
. /etc/rc.local
date
exit 0