Home | History | Annotate | Line # | Download | only in etc
rc revision 1.133
      1  1.133   darrenr #	$NetBSD: rc,v 1.133 1999/10/05 10:32:56 darrenr Exp $
      2   1.73     perry #	originally from: @(#)rc	8.2 (Berkeley) 3/17/94
      3    1.1       cgd 
      4    1.1       cgd # System startup script run by init on autoboot
      5    1.1       cgd # or after single-user.
      6    1.1       cgd # Output and error are redirected to console by init,
      7    1.1       cgd # and the console is the controlling terminal.
      8    1.1       cgd 
      9    1.1       cgd stty status '^T'
     10    1.1       cgd 
     11    1.1       cgd # Set shell to ignore SIGINT (2), but not children;
     12    1.1       cgd # shell catches SIGQUIT (3) and returns to single user after fsck.
     13    1.1       cgd trap : 2
     14    1.1       cgd trap : 3	# shouldn't be needed
     15    1.1       cgd 
     16   1.68   mycroft export HOME=/
     17   1.96  jonathan export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
     18   1.50   thorpej 
     19   1.50   thorpej # Configure ccd devices.
     20   1.63       mrg if [ -f /etc/ccd.conf ]; then
     21   1.50   thorpej 	ccdconfig -C
     22   1.50   thorpej fi
     23  1.107      tron 
     24  1.107      tron # Configure raid devices.
     25  1.107      tron for dev in 0 1 2 3; do
     26  1.107      tron 	if [ -f /etc/raid$dev.conf ]; then
     27  1.107      tron 		raidctl -c /etc/raid$dev.conf raid$dev
     28  1.107      tron 	fi
     29  1.107      tron done
     30    1.1       cgd 
     31   1.79   thorpej # Add all block-type swap devices; these might be necessary
     32   1.79   thorpej # during disk checks.
     33   1.79   thorpej swapctl -A -t blk
     34   1.79   thorpej 
     35   1.63       mrg if [ -e /fastboot ]; then
     36   1.38       cgd 	echo "Fast boot: skipping disk checks."
     37   1.68   mycroft elif [ "$1" = autoboot ]; then
     38   1.38       cgd 	echo "Automatic boot in progress: starting file system checks."
     39    1.1       cgd 	fsck -p
     40    1.1       cgd 	case $? in
     41    1.1       cgd 	0)
     42    1.1       cgd 		;;
     43    1.1       cgd 	2)
     44    1.1       cgd 		exit 1
     45    1.1       cgd 		;;
     46    1.1       cgd 	4)
     47   1.35       cgd 		echo "Rebooting..."
     48    1.1       cgd 		reboot
     49   1.38       cgd 		echo "Reboot failed; help!"
     50    1.1       cgd 		exit 1
     51    1.1       cgd 		;;
     52    1.1       cgd 	8)
     53   1.38       cgd 		echo "Automatic file system check failed; help!"
     54    1.1       cgd 		exit 1
     55    1.1       cgd 		;;
     56    1.1       cgd 	12)
     57   1.38       cgd 		echo "Boot interrupted."
     58    1.1       cgd 		exit 1
     59    1.1       cgd 		;;
     60    1.1       cgd 	130)
     61    1.1       cgd 		# interrupt before catcher installed
     62    1.1       cgd 		exit 1
     63    1.1       cgd 		;;
     64    1.1       cgd 	*)
     65   1.38       cgd 		echo "Unknown error; help!"
     66    1.1       cgd 		exit 1
     67    1.1       cgd 		;;
     68    1.1       cgd 	esac
     69    1.1       cgd fi
     70    1.1       cgd 
     71   1.38       cgd trap "echo 'Boot interrupted.'; exit 1" 3
     72    1.1       cgd 
     73    1.1       cgd umount -a >/dev/null 2>&1
     74   1.83  drochner mount /
     75    1.1       cgd rm -f /fastboot		# XXX (root now writeable)
     76   1.40       cgd 
     77   1.90     veego if [ -f /etc/rc.subr ]; then
     78   1.90     veego 	. /etc/rc.subr
     79   1.89       cjs else
     80   1.90     veego 	echo "Can't read /etc/rc.subr; aborting."
     81   1.89       cjs 	exit 1;
     82   1.89       cjs fi
     83   1.89       cjs 
     84   1.71   mycroft if [ -f /etc/rc.conf ]; then
     85   1.63       mrg 	. /etc/rc.conf
     86   1.63       mrg fi
     87   1.63       mrg 
     88   1.89       cjs if [ "$rc_configured" != YES ]; then
     89   1.89       cjs 	echo "/etc/rc.conf is not configured. Multiuser boot aborted."
     90   1.89       cjs 	exit 1
     91   1.89       cjs fi
     92   1.89       cjs 
     93   1.40       cgd # set flags on ttys.  (do early, in case they use tty for SLIP in netstart)
     94   1.40       cgd echo 'setting tty flags'
     95   1.40       cgd ttyflags -a
     96    1.1       cgd 
     97   1.83  drochner # load kernel modules specified in /etc/lkm.conf if the /usr filesystem
     98   1.83  drochner # is already present with "/" or can be mounted now
     99   1.93  drochner if checkyesno lkm && [ -f /etc/rc.lkm ]; then
    100   1.83  drochner 	mount /usr >/dev/null 2>&1
    101   1.83  drochner 	if [ -x /usr/bin/ld ]; then
    102   1.83  drochner 		lkmstage=BEFORENET
    103   1.83  drochner 		. /etc/rc.lkm
    104   1.83  drochner 	fi
    105   1.63       mrg fi
    106   1.63       mrg 
    107  1.124       cjs mount_critical_filesystems local
    108  1.120    mellon 
    109  1.133   darrenr if [ -e /etc/etc.current ] ; then
    110  1.133   darrenr 	if [ -h /etc/etc.default ] ; then
    111  1.133   darrenr 		def=`ls -ld /etc/etc.default 2>&1`
    112  1.133   darrenr 		default=`expr "$def" : '.*-> etc\.\(.*\)' 2>&1`
    113  1.133   darrenr 	else
    114  1.133   darrenr 		default=current
    115  1.133   darrenr 	fi
    116  1.133   darrenr 	spc=""
    117  1.133   darrenr 	conflist=`cd /etc; ls -1d etc.* 2>&1 | egrep -v 'current|default'`
    118  1.133   darrenr 	for i in $conflist; do
    119  1.133   darrenr 		name=`expr $i : 'etc\.\(.*\)' 2>&1`
    120  1.133   darrenr 		if [ $name = $default ] ; then
    121  1.133   darrenr 			echo -n "${spc}[${name}]"
    122  1.133   darrenr 		else
    123  1.133   darrenr 			echo -n "${spc}${name}"
    124  1.133   darrenr 		fi
    125  1.133   darrenr 		spc=" "
    126  1.133   darrenr 	done
    127  1.133   darrenr 	echo
    128  1.133   darrenr 	master=$$
    129  1.133   darrenr 	conf=/etc/passwd
    130  1.133   darrenr 	while [ ! -d /etc/etc.$conf ] ; do
    131  1.133   darrenr 		trap 'conf=$default; echo; echo Using default of $conf' 14
    132  1.133   darrenr 		echo -n "Which configuration [$default] ? "
    133  1.133   darrenr 		(sleep 30 && kill -ALRM $master) >/dev/null 2>&1 &
    134  1.133   darrenr 		read conf
    135  1.133   darrenr 		trap "" 14
    136  1.133   darrenr 		if [ -z $conf ] ; then
    137  1.133   darrenr 			conf=$default
    138  1.133   darrenr 		fi
    139  1.133   darrenr 		if [ ! -d /etc/etc.$conf -a ! -h /etc/etc.$conf ] ; then
    140  1.133   darrenr 			conf=/etc/passwd
    141  1.133   darrenr 		fi
    142  1.133   darrenr 	done
    143  1.133   darrenr 	rm -f /etc/etc.current
    144  1.133   darrenr 	ln -s /etc/etc.$conf /etc/etc.current
    145  1.133   darrenr 	if [ -f /etc/rc.conf ] ; then
    146  1.133   darrenr 		. /etc/rc.conf
    147  1.133   darrenr 	fi
    148  1.133   darrenr fi
    149  1.133   darrenr 
    150    1.1       cgd # set hostname, turn on network
    151    1.1       cgd echo 'starting network'
    152   1.76    scottr sh /etc/netstart
    153   1.76    scottr if [ $? -ne 0 ]; then
    154   1.76    scottr 	exit 1
    155   1.76    scottr fi
    156    1.1       cgd 
    157  1.124       cjs mount_critical_filesystems network
    158   1.99     veego 
    159   1.99     veego # Network Address Translation...
    160  1.100     lukem if checkyesno ipnat && [ -f /etc/ipnat.conf ]; then
    161   1.99     veego 	echo 'installing NAT rules ... '
    162  1.100     lukem 	if ! checkyesno ipfilter || [ ! -f /etc/ipf.conf ]; then
    163   1.99     veego 		ipf -E -Fa
    164   1.99     veego 	fi
    165   1.99     veego 	ipnat -F -f /etc/ipnat.conf
    166   1.99     veego fi
    167   1.79   thorpej 
    168   1.79   thorpej # "Critical" file systems are now mounted.  Go ahead and swap
    169   1.79   thorpej # to files now, since they will be residing in the critical file
    170   1.79   thorpej # systems (or, at least, better).
    171   1.79   thorpej swapctl -A -t noblk
    172   1.97       mrg 
    173   1.97       mrg # Check for no swap, and warn about it unless that is desired.
    174  1.100     lukem if ! checkyesno no_swap; then
    175   1.97       mrg 	swapctl -s | grep 'no swap devices configured' > /dev/null && \
    176   1.97       mrg 		echo "WARNING:  no swap space configured!"
    177   1.97       mrg fi
    178   1.26   deraadt 
    179   1.41       jtc # clean up left-over files
    180   1.41       jtc rm -f /etc/nologin
    181   1.41       jtc rm -f /var/spool/lock/LCK.*
    182   1.41       jtc rm -f /var/spool/uucp/STST/*
    183   1.45       cgd (cd /var/run && { rm -rf -- *; install -c -m 664 -g utmp /dev/null utmp; })
    184  1.108       abs 
    185  1.131   darrenr # if this kernel supports machdep.booted_kernel, use that to build the KVM
    186  1.131   darrenr # db so dmesg will run work when we boot /netbsd.new, etc.
    187  1.133   darrenr sysctl machdep 2>/dev/null | grep -q booted_kernel
    188  1.131   darrenr if [ $? -eq 0 ] ; then
    189  1.131   darrenr         kvm_mkdb `sysctl -n machdep.booted_kernel`
    190  1.131   darrenr fi
    191  1.111       mrg # get the system dmesg output, hopefully containing the boot messages
    192  1.111       mrg # $dmesg_flags is imported from /etc/rc.conf
    193  1.111       mrg if checkyesno dmesg; then
    194  1.111       mrg 	dmesg $dmesg_flags > /var/run/dmesg.boot
    195  1.111       mrg fi
    196   1.41       jtc 
    197  1.125      tron if checkyesno wscons && [ -f /etc/rc.wscons ]; then
    198  1.125      tron 	echo 'configuring wscons'
    199  1.125      tron 	/bin/sh /etc/rc.wscons $wscons_flags
    200  1.125      tron fi
    201  1.125      tron 
    202   1.84     veego # start the system logger first, so that all messages from daemons
    203   1.84     veego # are logged, then start savecore to get a dump on low memory systems
    204   1.84     veego # and then start the name server.
    205   1.63       mrg 
    206   1.89       cjs if checkyesno syslogd; then
    207   1.63       mrg 	echo 'starting system logger'
    208  1.119     perry 	# Transitional symlink for old binaries
    209  1.119     perry 	if [ ! -h /dev/log ] ; then
    210  1.119     perry 		ln -sf /var/run/log /dev/log
    211  1.119     perry 	fi
    212  1.119     perry 	rm -f /var/run/log
    213   1.63       mrg 	syslogd $syslogd_flags
    214   1.94     lukem fi
    215   1.94     lukem 
    216   1.94     lukem # Enable ipmon (only useful if ipfilter is running)
    217   1.94     lukem # NOTE: requires the IPFILTER_LOG kernel option.
    218   1.94     lukem if checkyesno ipmon; then
    219   1.94     lukem 	echo 'starting ipmon'
    220   1.94     lukem 	ipmon $ipmon_flags &
    221   1.63       mrg fi
    222   1.63       mrg 
    223   1.84     veego # /var/crash should be a directory or a symbolic link
    224   1.84     veego # to the crash directory if core dumps are to be saved.
    225   1.89       cjs if checkyesno savecore; then
    226  1.106   hubertf 	if [ -d /var/crash/. ]; then
    227   1.89       cjs 		echo checking for core dump...
    228   1.89       cjs 		savecore $savecore_flags /var/crash
    229   1.89       cjs 	else
    230   1.89       cjs 		logger -s "WARNING: no /var/crash directory; savecore not run."
    231   1.84     veego 	fi
    232   1.84     veego fi
    233   1.84     veego 
    234   1.89       cjs if checkyesno named; then
    235   1.89       cjs 	echo 'starting name server';	named $named_flags
    236   1.89       cjs fi
    237   1.89       cjs 
    238   1.89       cjs # set time, if requested
    239   1.89       cjs if checkyesno ntpdate; then
    240   1.91     mikel 	if [ -z "$ntpdate_hosts" ]; then
    241  1.101     lukem 		ntpdate_hosts=`awk '
    242  1.101     lukem 		    /^server[ \t]*127.127/	{next}
    243  1.115       bad 		    /^(server|peer)/			{print $2}
    244  1.101     lukem 		' </etc/ntp.conf`
    245   1.89       cjs 	fi
    246   1.89       cjs 	if [ -n "$ntpdate_hosts"  ]; then
    247   1.89       cjs 		echo 'Setting date via ntp.'
    248  1.102     lukem 		ntpdate -b -s $ntpdate_hosts
    249   1.67   mycroft 	fi
    250   1.63       mrg fi
    251   1.63       mrg 
    252   1.84     veego # now start the rpc servers, for YP server/client.
    253   1.63       mrg echo -n 'starting rpc daemons:'
    254   1.63       mrg 
    255   1.63       mrg # note that portmap is generally required for all other rpc services.
    256   1.89       cjs if checkyesno portmap; then
    257  1.109     jwise 	echo -n ' portmap';             portmap $portmap_flags
    258   1.63       mrg fi
    259   1.63       mrg 
    260   1.89       cjs if checkyesno ypserv; then
    261   1.63       mrg         echo -n ' ypserv';              ypserv $ypserv_flags
    262   1.63       mrg fi
    263   1.63       mrg 
    264   1.89       cjs if checkyesno ypbind; then
    265   1.63       mrg         echo -n ' ypbind';              ypbind $ypbind_flags
    266   1.63       mrg fi
    267   1.63       mrg 
    268   1.89       cjs if checkyesno yppasswdd; then
    269   1.63       mrg         echo -n ' rpc.yppasswdd';       rpc.yppasswdd $yppasswdd_flags
    270   1.63       mrg fi
    271   1.63       mrg 
    272   1.89       cjs if checkyesno bootparamd; then
    273   1.89       cjs 	if [ -r /etc/bootparams ]; then
    274   1.89       cjs 		echo -n ' rpc.bootparamd'; rpc.bootparamd $bootparamd_flags
    275   1.89       cjs 	else
    276   1.89       cjs 		echo
    277   1.89       cjs 		logger -s "WARNING: /etc/bootparams not found. " \
    278   1.89       cjs 		    "bootparamd not started."
    279   1.67   mycroft 	fi
    280   1.63       mrg fi
    281   1.63       mrg 
    282   1.84     veego echo '.'
    283   1.84     veego 
    284   1.84     veego # load kernel modules specified in /etc/lkm.conf
    285   1.89       cjs if checkyesno lkm; then
    286   1.89       cjs 	if [ -r /etc/rc.lkm ]; then
    287   1.89       cjs 		lkmstage=BEFOREMOUNT
    288   1.89       cjs 		. /etc/rc.lkm
    289   1.89       cjs 	else
    290   1.89       cjs 		logger -s "WARNING: /etc/rc.lkm not found; LKMs not loaded."
    291   1.89       cjs 	fi
    292   1.84     veego fi
    293   1.84     veego 
    294   1.84     veego mount -a
    295   1.84     veego 
    296   1.84     veego # now start the rpc servers, for NFS server/client.
    297  1.133   darrenr if checkyesno nfs_client || checkyesno nfs_server; then
    298  1.133   darrenr 	echo -n 'starting nfs daemons:'
    299  1.133   darrenr 
    300  1.133   darrenr 	nfs_locking=NO
    301   1.84     veego 
    302  1.133   darrenr 	if checkyesno nfs_server; then
    303  1.133   darrenr 		if [ -r /etc/exports ]; then
    304  1.133   darrenr 			rm -f /var/db/mountdtab
    305  1.133   darrenr 			echo -n > /var/db/mountdtab
    306  1.133   darrenr 			echo -n ' mountd';              mountd $mountd_flags
    307  1.133   darrenr 			echo -n ' nfsd';                nfsd $nfsd_flags
    308  1.133   darrenr 			nfs_locking=YES
    309  1.133   darrenr 		else
    310  1.133   darrenr 			echo
    311  1.133   darrenr 			logger -s "WARNING: /etc/exports not readable; " \
    312  1.133   darrenr 			    "NFS server not started."
    313  1.133   darrenr 		fi
    314  1.133   darrenr 	fi
    315   1.67   mycroft 
    316  1.133   darrenr 	if checkyesno nfs_client; then
    317  1.133   darrenr 		echo -n ' nfsiod';              nfsiod $nfsiod_flags
    318  1.100     lukem 		nfs_locking=YES
    319   1.69   mycroft 	fi
    320   1.63       mrg 
    321  1.133   darrenr 	if checkyesno nfs_locking; then
    322  1.133   darrenr 		if checkyesno statd; then
    323  1.133   darrenr 			echo -n ' rpc.statd';		rpc.statd $statd_flags
    324  1.133   darrenr 		fi
    325  1.133   darrenr 		if checkyesno lockd; then
    326  1.133   darrenr 			echo -n ' rpc.lockd';		rpc.lockd $lockd_flags
    327  1.133   darrenr 		fi
    328   1.66    scottr 	fi
    329   1.63       mrg 
    330  1.133   darrenr 	if checkyesno amd; then
    331  1.133   darrenr 		if [ -d "$amd_dir" ]; then
    332  1.133   darrenr 			if [ -r "$amd_master" ]; then
    333  1.133   darrenr 				echo -n ' amd'
    334  1.133   darrenr 				amd $amd_flags -p -a $amd_dir \
    335  1.133   darrenr 				`sed s/#.*$// <$amd_master`  >/var/run/amd.pid
    336  1.133   darrenr 			else
    337  1.133   darrenr 				echo
    338  1.133   darrenr 				logger -s "WARNING: \$amd_master ($amd_master)not " \
    339  1.133   darrenr 				    "readable; amd not started."
    340  1.133   darrenr 			fi
    341   1.89       cjs 		else
    342   1.89       cjs 			echo
    343  1.133   darrenr 			logger -s "WARNING: \$amd_dir ($amd_dir) not a directory; " \
    344  1.133   darrenr 			    "amd not started."
    345   1.89       cjs 		fi
    346   1.67   mycroft 	fi
    347  1.133   darrenr 	echo '.'
    348   1.63       mrg fi
    349   1.63       mrg 
    350   1.83  drochner 
    351   1.63       mrg if [ -f /sbin/ldconfig ]; then
    352   1.63       mrg 	echo 'creating runtime link editor directory cache.'
    353   1.88   thorpej 	ldconfig
    354   1.63       mrg fi 
    355   1.83  drochner 
    356   1.83  drochner # load kernel modules specified in /etc/lkm.conf
    357   1.89       cjs if checkyesno lkm && [ -f /etc/rc.lkm ]; then
    358   1.83  drochner 	lkmstage=AFTERMOUNT
    359   1.83  drochner 	. /etc/rc.lkm
    360  1.132    bouyer fi
    361  1.132    bouyer 
    362  1.132    bouyer # if $defcorename is set, change it here.
    363  1.132    bouyer if [ -n "$defcorename" ]; then
    364  1.132    bouyer 	echo -n 'setting default core name template: '
    365  1.132    bouyer 	sysctl -w kern.defcorename=$defcorename
    366    1.1       cgd fi
    367    1.1       cgd 
    368  1.112       mrg # if $securelevel is set, change it here, else if it is 0, change
    369  1.112       mrg # it to 1 here, before we start login services.
    370  1.113       mrg if [ -n "$securelevel" ]; then
    371  1.112       mrg 	echo -n 'setting securelevel: '
    372  1.112       mrg 	sysctl -w kern.securelevel=$securelevel
    373  1.112       mrg else
    374  1.116   frueauf 	securelevel=`sysctl -n kern.securelevel`
    375  1.112       mrg 	if [ x"$securelevel" = x0 ]; then
    376  1.112       mrg 		echo -n 'setting securelevel: '
    377  1.112       mrg 		sysctl -w kern.securelevel=1
    378  1.112       mrg 	fi
    379  1.112       mrg fi
    380  1.112       mrg 
    381   1.89       cjs echo -n 'checking quotas:'; quotacheck -a; echo ' done.'
    382   1.47   deraadt quotaon -a
    383    1.1       cgd 
    384    1.1       cgd # build ps databases
    385    1.2       cgd echo 'building databases...'
    386   1.11       cgd kvm_mkdb /netbsd
    387    1.1       cgd dev_mkdb
    388    1.1       cgd 
    389    1.1       cgd chmod 666 /dev/tty[pqrs]*
    390    1.1       cgd 
    391    1.1       cgd # check the password temp/lock file
    392    1.1       cgd if [ -f /etc/ptmp ]
    393    1.1       cgd then
    394    1.1       cgd 	logger -s -p auth.err \
    395    1.1       cgd 	'password file may be incorrect -- /etc/ptmp exists'
    396    1.1       cgd fi
    397    1.1       cgd 
    398  1.112       mrg # XXX replace me with a script that works!
    399   1.85     perry virecovery=`echo /var/tmp/vi.recover/recover.*`
    400   1.32   mycroft if [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then
    401   1.32   mycroft 	echo preserving editor files
    402   1.32   mycroft 	for i in $virecovery; do
    403  1.129  christos 		if [ -f $i ]; then
    404  1.129  christos 			sendmail -t < $i
    405  1.129  christos 		fi
    406   1.32   mycroft 	done
    407   1.32   mycroft fi
    408    1.1       cgd 
    409    1.1       cgd echo clearing /tmp
    410    1.1       cgd 
    411   1.65     mikel # Prune quickly with one rm, then use find to clean up /tmp/[lq]* (this
    412   1.65     mikel # is not needed with mfs /tmp, but doesn't hurt anything).
    413    1.1       cgd (cd /tmp && rm -rf [a-km-pr-zA-Z]* &&
    414   1.46   deraadt     find . ! -name . ! -name lost+found ! -name quota.user \
    415   1.46   deraadt 	! -name quota.group -exec rm -rf -- {} \; -type d -prune)
    416    1.1       cgd 
    417   1.74     perry # Update kernel info in /etc/motd
    418   1.74     perry # Must be done *before* interactive logins are possible to prevent
    419   1.74     perry # possible race conditions.
    420   1.89       cjs if checkyesno update_motd; then
    421   1.74     perry 	echo 'updating motd.'
    422   1.74     perry 	if [ ! -f /etc/motd ]; then
    423   1.74     perry 		install -c -o root -g wheel -m 664 /dev/null /etc/motd
    424   1.74     perry 	fi
    425  1.128  christos 	T=/etc/_motd
    426   1.74     perry 	rm -f $T
    427   1.74     perry 	sysctl -n kern.version | sed 1q > $T
    428   1.74     perry 	echo "" >> $T
    429   1.74     perry 	sed '1,/^$/d' < /etc/motd >> $T
    430   1.74     perry 	cmp -s $T /etc/motd || cp $T /etc/motd
    431   1.74     perry 	rm -f $T
    432   1.74     perry fi
    433   1.74     perry 
    434   1.34       cgd if [ -f /var/account/acct ]; then
    435   1.34       cgd 	echo 'turning on accounting';	accton /var/account/acct
    436   1.34       cgd fi
    437    1.1       cgd 
    438    1.1       cgd echo -n standard daemons:
    439   1.89       cjs if checkyesno update; then
    440   1.70   mycroft 	echo -n ' update';		update $update_flags
    441   1.70   mycroft fi
    442  1.110     jwise if checkyesno cron; then
    443  1.110     jwise 	echo -n ' cron';		cron
    444  1.110     jwise fi
    445    1.1       cgd echo '.'
    446    1.1       cgd 
    447   1.63       mrg # now start all the other daemons
    448    1.1       cgd echo -n starting network daemons:
    449    1.1       cgd 
    450   1.89       cjs if checkyesno gated && checkyesno routed; then
    451   1.89       cjs 	echo
    452   1.89       cjs 	logger -s "WARNING: gated and routed both requested to be run: " \
    453   1.89       cjs 	    "running only gated."
    454   1.89       cjs 	routed=NO
    455   1.89       cjs fi
    456   1.89       cjs 
    457   1.89       cjs if checkyesno gated; then
    458   1.89       cjs 	if [ -r /etc/gated.conf ]; then
    459   1.89       cjs 		echo -n ' gated';		gated $gated_flags
    460   1.89       cjs 	else
    461   1.89       cjs 		logger -s "WARNING: no /etc/gated.conf; gated not started."
    462   1.67   mycroft 	fi
    463   1.89       cjs fi
    464   1.89       cjs 
    465   1.89       cjs if checkyesno routed; then
    466   1.48   mycroft 	echo -n ' routed';		routed $routed_flags
    467    1.1       cgd fi
    468    1.1       cgd 
    469   1.89       cjs if checkyesno mrouted; then
    470   1.55   thorpej 	echo -n ' mrouted';		mrouted $mrouted_flags
    471  1.127    itojun fi
    472  1.127    itojun 
    473  1.127    itojun if checkyesno route6d; then
    474  1.127    itojun 	echo -n ' route6d';		route6d $route6d_flags
    475  1.127    itojun fi
    476  1.127    itojun 
    477  1.130    itojun if checkyesno rtsold; then
    478  1.130    itojun 	if checkyesno ip6forwarding; then
    479  1.130    itojun 		logger -s "WARNING: rtsold cannot be used on IPv6 router."
    480  1.130    itojun 	else
    481  1.130    itojun 		echo -n ' rtsold';	rtsold $rtsold_flags
    482  1.130    itojun 	fi
    483  1.130    itojun fi
    484  1.130    itojun 
    485  1.127    itojun if checkyesno rtadvd; then
    486  1.130    itojun 	if checkyesno ip6forwarding; then
    487  1.130    itojun 		echo -n ' rtadvd';	rtadvd $rtadvd_flags
    488  1.130    itojun 	else
    489  1.130    itojun 		logger -s "WARNING: rtadvd cannot be used on IPv6 host."
    490  1.130    itojun 	fi
    491   1.55   thorpej fi
    492   1.55   thorpej 
    493   1.89       cjs if checkyesno timed; then
    494   1.67   mycroft 	echo -n ' timed'; 		timed $timed_flags
    495   1.63       mrg fi
    496   1.63       mrg 
    497   1.89       cjs if checkyesno xntpd; then
    498   1.67   mycroft 	echo -n ' xntpd';		xntpd $xntpd_flags
    499   1.61       mrg fi
    500   1.61       mrg 
    501   1.89       cjs if checkyesno dhcpd; then
    502   1.89       cjs 	if [ -r /etc/dhcpd.conf ]; then
    503   1.89       cjs 		echo -n ' dhcpd';		dhcpd $dhcpd_flags
    504   1.89       cjs 	else
    505   1.89       cjs 		echo
    506   1.89       cjs 		logger -s "WARNING: /etc/dhcpd.conf not readable; " \
    507   1.89       cjs 		    "dhcpd not started."
    508   1.67   mycroft 	fi
    509  1.122  sommerfe elif checkyesno dhcrelay; then
    510  1.122  sommerfe 	echo -n ' dhcrelay';            dhcrelay $dhcrelay_flags
    511   1.29   mycroft fi
    512   1.29   mycroft 
    513   1.89       cjs if checkyesno rwhod; then
    514   1.48   mycroft 	echo -n ' rwhod';		rwhod
    515    1.1       cgd fi
    516    1.1       cgd 
    517   1.89       cjs if checkyesno lpd; then
    518   1.89       cjs 	echo -n ' lpd';			lpd $lpd_flags
    519   1.60       tls fi
    520   1.60       tls 
    521   1.63       mrg # We call sendmail with a full path so that SIGHUP works.
    522   1.89       cjs if checkyesno sendmail; then
    523   1.89       cjs 	if [ -r /etc/sendmail.cf ]; then
    524   1.89       cjs 		echo -n ' sendmail';	/usr/sbin/sendmail $sendmail_flags
    525   1.89       cjs 	else
    526   1.89       cjs 		echo
    527   1.89       cjs 		logger -s "WARNING: /etc/sendmail.cf not readable; " \
    528   1.89       cjs 		    "sendmail not started."
    529   1.67   mycroft 	fi
    530   1.60       tls fi
    531   1.60       tls 
    532   1.96  jonathan # Start xfs before boot daemons, so its ready before client xterminals.
    533   1.96  jonathan if checkyesno xfs; then
    534   1.96  jonathan 	echo -n ' xfs';			xfs $xfs_flags &
    535   1.98     perry 	sleep 2
    536   1.96  jonathan fi
    537   1.96  jonathan 
    538   1.89       cjs if checkyesno rarpd; then
    539   1.89       cjs 	if [ -r /etc/ethers ]; then
    540   1.89       cjs 		echo -n ' rarpd';	rarpd $rarpd_flags
    541   1.89       cjs 	else
    542   1.89       cjs 		echo
    543   1.89       cjs 		logger -s "WARNING: /etc/ethers not readable; " \
    544   1.89       cjs 		    "rarpd not started."
    545   1.67   mycroft 	fi
    546   1.60       tls fi
    547   1.60       tls 
    548   1.89       cjs if checkyesno rbootd; then
    549   1.89       cjs 	if [ -r /etc/rbootd.conf ]; then
    550   1.89       cjs 		echo -n ' rbootd';	rbootd $rbootd_flags
    551   1.89       cjs 	else
    552   1.89       cjs 		echo
    553   1.89       cjs 		logger -s "WARNING: /etc/rbootd.conf not readable; " \
    554  1.111       mrg 		    "rbootd not started."
    555   1.67   mycroft 	fi
    556   1.72       cjs fi
    557   1.72       cjs 
    558   1.89       cjs if checkyesno mopd; then
    559   1.72       cjs 	echo -n ' mopd';		mopd $mopd_flags
    560   1.86     perry fi
    561   1.86     perry 
    562   1.89       cjs if checkyesno apmd; then
    563   1.86     perry 	echo -n ' apmd';		apmd $apmd_flags
    564  1.103       mrg fi
    565  1.103       mrg 
    566  1.103       mrg if checkyesno screenblank; then
    567  1.103       mrg 	echo -n ' screenblank';		screenblank $screenblank_flags
    568   1.52   thorpej fi
    569   1.52   thorpej 
    570   1.89       cjs if checkyesno inetd; then
    571   1.89       cjs 	if [ -r /etc/inetd.conf ]; then
    572   1.89       cjs 		echo -n ' inetd';	inetd $inetd_flags
    573   1.89       cjs 	else
    574   1.89       cjs 		echo
    575   1.89       cjs 		logger -s "WARNING: /etc/inetd.conf not readable; " \
    576   1.89       cjs 		    "inetd not started."
    577   1.67   mycroft 	fi
    578   1.96  jonathan fi
    579   1.96  jonathan 
    580    1.1       cgd echo '.'
    581   1.73     perry 
    582   1.73     perry # Kerberos runs ONLY on the Kerberos server machine
    583   1.89       cjs if checkyesno kerberos; then
    584   1.73     perry 	echo -n 'starting kerberos daemons:'
    585   1.73     perry 	echo -n ' kerberos';	kerberos >> /var/log/kerberos.log &
    586   1.73     perry 	echo -n ' kadmind';	kadmind -n >> /var/log/kadmind.log &
    587   1.73     perry 	echo '.'
    588  1.123  drochner fi
    589  1.123  drochner 
    590  1.123  drochner # xdm after wscons - need a virtual screen for X
    591  1.123  drochner if checkyesno xdm; then
    592  1.123  drochner 	echo 'starting xdm'
    593  1.123  drochner 	xdm $xdm_flags
    594   1.73     perry fi
    595    1.1       cgd 
    596   1.25   mycroft . /etc/rc.local
    597    1.1       cgd 
    598    1.1       cgd date
    599    1.1       cgd exit 0
    600