rc revision 1.141
1227569Sphilip#	$NetBSD: rc,v 1.141 2000/01/07 05:25:45 enami Exp $
2300607Sarybchik#	originally from: @(#)rc	8.2 (Berkeley) 3/17/94
3283514Sarybchik
4227569Sphilip# System startup script run by init on autoboot
5227569Sphilip# or after single-user.
6283514Sarybchik# Output and error are redirected to console by init,
7227569Sphilip# and the console is the controlling terminal.
8283514Sarybchik
9283514Sarybchikstty status '^T'
10283514Sarybchik
11283514Sarybchik# Set shell to ignore SIGINT (2), but not children;
12283514Sarybchik# shell catches SIGQUIT (3) and returns to single user after fsck.
13283514Sarybchiktrap : 2
14283514Sarybchiktrap : 3	# shouldn't be needed
15283514Sarybchik
16283514Sarybchikexport HOME=/
17283514Sarybchikexport PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
18283514Sarybchik
19283514Sarybchik# Configure ccd devices.
20283514Sarybchikif [ -f /etc/ccd.conf ]; then
21283514Sarybchik	ccdconfig -C
22283514Sarybchikfi
23283514Sarybchik
24283514Sarybchik# Configure raid devices.
25283514Sarybchikfor dev in 0 1 2 3; do
26283514Sarybchik	if [ -f /etc/raid$dev.conf ]; then
27283514Sarybchik		raidctl -c /etc/raid$dev.conf raid$dev
28283514Sarybchik	fi
29227569Sphilipdone
30227569Sphilip
31228078Sphilip# Add all block-type swap devices; these might be necessary
32228078Sphilip# during disk checks.
33228078Sphilipswapctl -A -t blk
34227569Sphilip
35227569Sphilipif [ -e /fastboot ]; then
36227569Sphilip	echo "Fast boot: skipping disk checks."
37283514Sarybchikelif [ "$1" = autoboot ]; then
38299320Sarybchik	echo "Automatic boot in progress: starting file system checks."
39283514Sarybchik	fsck -p
40291436Sarybchik	case $? in
41299608Sarybchik	0)
42283514Sarybchik		;;
43283514Sarybchik	2)
44283514Sarybchik		exit 1
45283514Sarybchik		;;
46283514Sarybchik	4)
47299608Sarybchik		echo "Rebooting..."
48283514Sarybchik		reboot
49283514Sarybchik		echo "Reboot failed; help!"
50283514Sarybchik		exit 1
51299608Sarybchik		;;
52283514Sarybchik	8)
53283514Sarybchik		echo "Automatic file system check failed; help!"
54283514Sarybchik		exit 1
55299608Sarybchik		;;
56283514Sarybchik	12)
57283514Sarybchik		echo "Boot interrupted."
58291436Sarybchik		exit 1
59299608Sarybchik		;;
60283514Sarybchik	130)
61283514Sarybchik		# interrupt before catcher installed
62283514Sarybchik		exit 1
63283514Sarybchik		;;
64299608Sarybchik	*)
65283514Sarybchik		echo "Unknown error; help!"
66283514Sarybchik		exit 1
67293769Sarybchik		;;
68299608Sarybchik	esac
69293769Sarybchikfi
70293769Sarybchik
71293769Sarybchiktrap "echo 'Boot interrupted.'; exit 1" 3
72283514Sarybchik
73293769Sarybchikumount -a >/dev/null 2>&1
74299608Sarybchikmount /
75293769Sarybchikrm -f /fastboot		# XXX (root now writeable)
76293769Sarybchik
77293769Sarybchikif [ -f /etc/rc.subr ]; then
78283514Sarybchik	. /etc/rc.subr
79283514Sarybchikelse
80299608Sarybchik	echo "Can't read /etc/rc.subr; aborting."
81283514Sarybchik	exit 1;
82283514Sarybchikfi
83293769Sarybchik
84299608Sarybchikif [ -f /etc/rc.conf ]; then
85293769Sarybchik	. /etc/rc.conf
86293769Sarybchikfi
87293769Sarybchik
88299320Sarybchikif ! checkyesno rc_configured; then
89283514Sarybchik	echo "/etc/rc.conf is not configured. Multiuser boot aborted."
90283514Sarybchik	exit 1
91283514Sarybchikfi
92299517Sarybchik
93299608Sarybchik# set flags on ttys.  (do early, in case they use tty for SLIP in netstart)
94299608Sarybchikecho 'setting tty flags'
95299608Sarybchikttyflags -a
96299608Sarybchik
97299608Sarybchik# load kernel modules specified in /etc/lkm.conf if the /usr filesystem
98299608Sarybchik# is already present with "/" or can be mounted now
99299608Sarybchikif checkyesno lkm && [ -f /etc/rc.lkm ]; then
100299608Sarybchik	mount /usr >/dev/null 2>&1
101299608Sarybchik	if [ -x /usr/bin/ld ]; then
102283514Sarybchik		lkmstage=BEFORENET
103283514Sarybchik		. /etc/rc.lkm
104283514Sarybchik	fi
105293751Sarybchikfi
106299517Sarybchik
107293751Sarybchikmount_critical_filesystems local
108293751Sarybchik
109293751Sarybchikif [ -e /etc/etc.current ] ; then
110293751Sarybchik	if [ -h /etc/etc.default ] ; then
111293751Sarybchik		def=`ls -ld /etc/etc.default 2>&1`
112293769Sarybchik		default=`expr "$def" : '.*-> etc\.\(.*\)' 2>&1`
113293769Sarybchik	else
114293769Sarybchik		default=current
115293751Sarybchik	fi
116283514Sarybchik	spc=""
117293751Sarybchik	conflist=`cd /etc; ls -1d etc.* 2>&1 | egrep -v 'current|default'`
118283514Sarybchik	for i in $conflist; do
119291436Sarybchik		name=`expr $i : 'etc\.\(.*\)' 2>&1`
120227569Sphilip		if [ $name = $default ] ; then
121227569Sphilip			echo -n "${spc}[${name}]"
122227569Sphilip		else
123227569Sphilip			echo -n "${spc}${name}"
124227569Sphilip		fi
125227569Sphilip		spc=" "
126299517Sarybchik	done
127291436Sarybchik	echo
128227569Sphilip	master=$$
129227569Sphilip	conf=/etc/passwd
130227569Sphilip	while [ ! -d /etc/etc.$conf ] ; do
131227569Sphilip		trap 'conf=$default; echo; echo Using default of $conf' 14
132227569Sphilip		echo -n "Which configuration [$default] ? "
133227569Sphilip		(sleep 30 && kill -ALRM $master) >/dev/null 2>&1 &
134227569Sphilip		read conf
135227569Sphilip		trap "" 14
136227569Sphilip		if [ -z $conf ] ; then
137283514Sarybchik			conf=$default
138283514Sarybchik		fi
139283514Sarybchik		if [ ! -d /etc/etc.$conf -a ! -h /etc/etc.$conf ] ; then
140283514Sarybchik			conf=/etc/passwd
141227569Sphilip		fi
142227569Sphilip	done
143283514Sarybchik	rm -f /etc/etc.current
144283514Sarybchik	ln -s /etc/etc.$conf /etc/etc.current
145283514Sarybchik	if [ -f /etc/rc.conf ] ; then
146299517Sarybchik		. /etc/rc.conf
147283514Sarybchik	fi
148283514Sarybchikfi
149283514Sarybchik
150283514Sarybchik# set hostname, turn on network
151283514Sarybchikecho 'starting network'
152299517Sarybchiksh /etc/netstart
153283514Sarybchikif [ $? -ne 0 ]; then
154283514Sarybchik	exit 1
155283514Sarybchikfi
156293751Sarybchik
157293751Sarybchikmount_critical_filesystems network
158299517Sarybchik
159293751Sarybchik# Network Address Translation...
160293751Sarybchikif checkyesno ipnat && [ -f /etc/ipnat.conf ]; then
161293751Sarybchik	echo 'installing NAT rules ... '
162283514Sarybchik	if ! checkyesno ipfilter || [ ! -f /etc/ipf.conf ]; then
163283514Sarybchik		ipf -E -Fa
164283514Sarybchik	fi
165283514Sarybchik	ipnat -F -f /etc/ipnat.conf
166283514Sarybchikfi
167283514Sarybchik
168283514Sarybchik# "Critical" file systems are now mounted.  Go ahead and swap
169283514Sarybchik# to files now, since they will be residing in the critical file
170283514Sarybchik# systems (or, at least, better).
171283514Sarybchikswapctl -A -t noblk
172283514Sarybchik
173283514Sarybchik# Check for no swap, and warn about it unless that is desired.
174283514Sarybchikif ! checkyesno no_swap; then
175283514Sarybchik	swapctl -s | grep 'no swap devices configured' > /dev/null && \
176283514Sarybchik		echo "WARNING:  no swap space configured!"
177283514Sarybchikfi
178283514Sarybchik
179283514Sarybchik# clean up left-over files
180291436Sarybchikrm -f /etc/nologin
181283514Sarybchikrm -f /var/spool/lock/LCK.*
182283514Sarybchikrm -f /var/spool/uucp/STST/*
183283514Sarybchik(cd /var/run && { rm -rf -- *; install -c -m 664 -g utmp /dev/null utmp; })
184283514Sarybchik
185283514Sarybchik# build ps databases
186283514Sarybchikecho 'building databases...'
187283514Sarybchik# if this kernel supports machdep.booted_kernel, use that to build the KVM
188283514Sarybchik# db so dmesg will run work when we boot /netbsd.new, etc.
189283514Sarybchiksysctl machdep 2>/dev/null | grep -q booted_kernel
190299517Sarybchikif [ $? -eq 0 ] ; then
191283514Sarybchik	kvm_mkdb `sysctl -n machdep.booted_kernel`
192283514Sarybchik	if [ $? -ne 0 ] ; then
193283514Sarybchik		kvm_mkdb /netbsd
194283514Sarybchik	fi
195283514Sarybchikelse
196283514Sarybchik	kvm_mkdb /netbsd
197283514Sarybchikfi
198283514Sarybchikdev_mkdb
199283514Sarybchik
200283514Sarybchik# get the system dmesg output, hopefully containing the boot messages
201283514Sarybchik# $dmesg_flags is imported from /etc/rc.conf
202283514Sarybchikif checkyesno dmesg; then
203283514Sarybchik	dmesg $dmesg_flags > /var/run/dmesg.boot
204283514Sarybchikfi
205283514Sarybchik
206299517Sarybchikif checkyesno wscons && [ -f /etc/rc.wscons ]; then
207283514Sarybchik	echo 'configuring wscons'
208283514Sarybchik	/bin/sh /etc/rc.wscons $wscons_flags
209283514Sarybchikfi
210283514Sarybchik
211283514Sarybchik# start the system logger first, so that all messages from daemons
212283514Sarybchik# are logged, then start savecore to get a dump on low memory systems
213283514Sarybchik# and then start the name server.
214283514Sarybchik
215283514Sarybchikif checkyesno syslogd; then
216283514Sarybchik	echo 'starting system logger'
217283514Sarybchik	# Transitional symlink for old binaries
218283514Sarybchik	if [ ! -h /dev/log ] ; then
219299517Sarybchik		ln -sf /var/run/log /dev/log
220283514Sarybchik	fi
221283514Sarybchik	rm -f /var/run/log
222283514Sarybchik	syslogd $syslogd_flags
223283514Sarybchikfi
224283514Sarybchik
225283514Sarybchik# Enable ipmon (only useful if ipfilter is running)
226283514Sarybchik# NOTE: requires the IPFILTER_LOG kernel option.
227283514Sarybchikif checkyesno ipmon; then
228283514Sarybchik	echo 'starting ipmon'
229283514Sarybchik	ipmon $ipmon_flags &
230283514Sarybchikfi
231283514Sarybchik
232299517Sarybchik# /var/crash should be a directory or a symbolic link
233283514Sarybchik# to the crash directory if core dumps are to be saved.
234283514Sarybchikif checkyesno savecore; then
235283514Sarybchik	if [ -d /var/crash/. ]; then
236283514Sarybchik		echo checking for core dump...
237283514Sarybchik		savecore $savecore_flags /var/crash
238283514Sarybchik	else
239283514Sarybchik		logger -s "WARNING: no /var/crash directory; savecore not run."
240283514Sarybchik	fi
241291436Sarybchikfi
242283514Sarybchik
243283514Sarybchikif checkyesno named; then
244283514Sarybchik	echo 'starting name server';	named $named_flags
245283514Sarybchikfi
246283514Sarybchik
247299517Sarybchik# set time, if requested
248283514Sarybchikif checkyesno ntpdate; then
249283514Sarybchik	if [ -z "$ntpdate_hosts" ]; then
250283514Sarybchik		ntpdate_hosts=`awk '
251283514Sarybchik		    /^server[ \t]*127.127/	{next}
252283514Sarybchik		    /^(server|peer)/		{print $2}
253283514Sarybchik		' </etc/ntp.conf`
254283514Sarybchik	fi
255283514Sarybchik	if [ -n "$ntpdate_hosts"  ]; then
256283514Sarybchik		echo 'Setting date via ntp.'
257283514Sarybchik		ntpdate -b -s $ntpdate_hosts
258283514Sarybchik	fi
259283514Sarybchikfi
260283514Sarybchik
261283514Sarybchik# now start the rpc servers, for YP server/client.
262299517Sarybchikecho -n 'starting rpc daemons:'
263283514Sarybchik
264283514Sarybchik# note that portmap is generally required for all other rpc services.
265283514Sarybchikif checkyesno portmap; then
266283514Sarybchik	echo -n ' portmap';		portmap $portmap_flags
267293769Sarybchikfi
268283514Sarybchik
269283514Sarybchikif checkyesno ypserv; then
270283514Sarybchik	if ! checkyesno portmap; then
271283514Sarybchik		echo
272283514Sarybchik		logger -s "WARNING: set portmap=YES in /etc/rc.conf " \
273283514Sarybchik		    "if ypserv=YES."
274283514Sarybchik	fi
275283514Sarybchik
276283514Sarybchik	echo -n ' ypserv';		ypserv $ypserv_flags
277299517Sarybchikfi
278283514Sarybchik
279283514Sarybchikif checkyesno ypbind; then
280283514Sarybchik	echo -n ' ypbind';		ypbind $ypbind_flags
281283514Sarybchikfi
282293769Sarybchik
283283514Sarybchikif checkyesno yppasswdd; then
284283514Sarybchik	if ! checkyesno ypserv; then
285283514Sarybchik		echo
286283514Sarybchik		logger -s "WARNING: set ypserv=YES in /etc/rc.conf " \
287283514Sarybchik		    "if yppasswdd=YES."
288283514Sarybchik	fi
289293769Sarybchik
290299517Sarybchik	echo -n ' rpc.yppasswdd';       rpc.yppasswdd $yppasswdd_flags
291293769Sarybchikfi
292283514Sarybchik
293283514Sarybchikif checkyesno bootparamd; then
294283514Sarybchik	if [ -r /etc/bootparams ]; then
295293769Sarybchik		echo -n ' rpc.bootparamd'; rpc.bootparamd $bootparamd_flags
296283514Sarybchik	else
297283514Sarybchik		echo
298283514Sarybchik		logger -s "WARNING: /etc/bootparams not found. " \
299283514Sarybchik		    "bootparamd not started."
300283514Sarybchik	fi
301283514Sarybchikfi
302283514Sarybchik
303299320Sarybchikecho '.'
304283514Sarybchik
305291436Sarybchik# load kernel modules specified in /etc/lkm.conf
306299608Sarybchikif checkyesno lkm; then
307283514Sarybchik	if [ -r /etc/rc.lkm ]; then
308283514Sarybchik		lkmstage=BEFOREMOUNT
309283514Sarybchik		. /etc/rc.lkm
310283514Sarybchik	else
311283514Sarybchik		logger -s "WARNING: /etc/rc.lkm not found; LKMs not loaded."
312283514Sarybchik	fi
313283514Sarybchikfi
314283514Sarybchik
315227569Sphilipmount -a
316227569Sphilip
317227569Sphilip# now start the rpc servers, for NFS server/client.
318227569Sphilipif checkyesno nfs_client || checkyesno nfs_server; then
319227569Sphilip	echo -n 'starting nfs daemons:'
320227569Sphilip
321227569Sphilip	if checkyesno nfs_server && ! checkyesno portmap; then
322227569Sphilip		echo
323227569Sphilip		logger -s "WARNING: set portmap=YES in /etc/rc.conf " \
324227569Sphilip		    "if nfs_server=YES."
325227569Sphilip	fi
326227569Sphilip
327227569Sphilip	nfs_locking=NO
328227569Sphilip
329227569Sphilip	if checkyesno nfs_server; then
330227569Sphilip		if [ -r /etc/exports ]; then
331227569Sphilip			rm -f /var/db/mountdtab
332227569Sphilip			echo -n > /var/db/mountdtab
333227569Sphilip			echo -n ' mountd';		mountd $mountd_flags
334227569Sphilip			echo -n ' nfsd';		nfsd $nfsd_flags
335227569Sphilip			nfs_locking=YES
336227569Sphilip		else
337227569Sphilip			echo
338227569Sphilip			logger -s "WARNING: /etc/exports not readable; " \
339227569Sphilip			    "NFS server not started."
340227569Sphilip		fi
341227569Sphilip	fi
342227569Sphilip
343227569Sphilip	if checkyesno nfs_client; then
344227569Sphilip		echo -n ' nfsiod';		nfsiod $nfsiod_flags
345227569Sphilip		nfs_locking=YES
346283514Sarybchik	fi
347299608Sarybchik
348227569Sphilip	if checkyesno nfs_locking; then
349227569Sphilip		if checkyesno statd; then
350227569Sphilip			echo -n ' rpc.statd';		rpc.statd $statd_flags
351227569Sphilip		fi
352227569Sphilip		if checkyesno lockd; then
353227569Sphilip			echo -n ' rpc.lockd';		rpc.lockd $lockd_flags
354227569Sphilip		fi
355227569Sphilip	fi
356227569Sphilip
357227569Sphilip	if checkyesno amd; then
358227569Sphilip		if [ -d "$amd_dir" ]; then
359227569Sphilip			if [ -r "$amd_master" ]; then
360283514Sarybchik				echo -n ' amd'
361299608Sarybchik				amd $amd_flags -p -a $amd_dir \
362227569Sphilip				`sed s/#.*$// <$amd_master`  >/var/run/amd.pid
363227569Sphilip			else
364227569Sphilip				echo
365227569Sphilip				logger -s "WARNING: \$amd_master " \
366227569Sphilip				    "($amd_master) not readable; " \
367227569Sphilip				    "amd not started."
368227569Sphilip			fi
369227569Sphilip		else
370227569Sphilip			echo
371227569Sphilip			logger -s "WARNING: \$amd_dir ($amd_dir) not a " \
372227569Sphilip			    "directory; amd not started."
373283514Sarybchik		fi
374299608Sarybchik	fi
375227569Sphilip	echo '.'
376227569Sphilipfi
377227569Sphilip
378227569Sphilip
379227569Sphilipif [ -f /sbin/ldconfig ]; then
380227569Sphilip	echo 'creating runtime link editor directory cache.'
381227569Sphilip	ldconfig
382227569Sphilipfi 
383227569Sphilip
384227569Sphilip# load kernel modules specified in /etc/lkm.conf
385227569Sphilipif checkyesno lkm && [ -f /etc/rc.lkm ]; then
386291436Sarybchik	lkmstage=AFTERMOUNT
387299608Sarybchik	. /etc/rc.lkm
388227569Sphilipfi
389227569Sphilip
390227569Sphilip# if $defcorename is set, change it here.
391227569Sphilipif [ -n "$defcorename" ]; then
392227569Sphilip	echo -n 'setting default core name template: '
393227569Sphilip	sysctl -w kern.defcorename=$defcorename
394227569Sphilipfi
395291436Sarybchik
396227569Sphilip# if $securelevel is set, change it here, else if it is 0, change
397227569Sphilip# it to 1 here, before we start login services.
398227569Sphilipif [ -n "$securelevel" ]; then
399227569Sphilip	echo -n 'setting securelevel: '
400299403Sarybchik	sysctl -w kern.securelevel=$securelevel
401299403Sarybchikelse
402299403Sarybchik	securelevel=`sysctl -n kern.securelevel`
403227569Sphilip	if [ x"$securelevel" = x0 ]; then
404227569Sphilip		echo -n 'setting securelevel: '
405227569Sphilip		sysctl -w kern.securelevel=1
406227569Sphilip	fi
407227569Sphilipfi
408227569Sphilip
409227569Sphilipecho -n 'checking quotas:'; quotacheck -a; echo ' done.'
410227569Sphilipquotaon -a
411227569Sphilip
412227569Sphilipchmod 666 /dev/tty[pqrs]*
413227569Sphilip
414227569Sphilip# check the password temp/lock file
415227569Sphilipif [ -f /etc/ptmp ]
416227569Sphilipthen
417227569Sphilip	logger -s -p auth.err \
418227569Sphilip	    'password file may be incorrect -- /etc/ptmp exists'
419227569Sphilipfi
420227569Sphilip
421227569Sphilip# XXX replace me with a script that works!
422227569Sphilipvirecovery=`echo /var/tmp/vi.recover/recover.*`
423227569Sphilipif [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then
424227569Sphilip	echo preserving editor files
425227569Sphilip	for i in $virecovery; do
426227569Sphilip		if [ -f $i ]; then
427227569Sphilip			sendmail -t < $i
428227569Sphilip		fi
429227569Sphilip	done
430227569Sphilipfi
431227569Sphilip
432227569Sphilipecho clearing /tmp
433227569Sphilip
434291436Sarybchik# Prune quickly with one rm, then use find to clean up /tmp/[lq]* (this
435227569Sphilip# is not needed with mfs /tmp, but doesn't hurt anything).
436227569Sphilip(cd /tmp && rm -rf [a-km-pr-zA-Z]* &&
437227569Sphilip    find . ! -name . ! -name lost+found ! -name quota.user \
438227569Sphilip	! -name quota.group -exec rm -rf -- {} \; -type d -prune)
439227569Sphilip
440299608Sarybchik# Update kernel info in /etc/motd
441227569Sphilip# Must be done *before* interactive logins are possible to prevent
442227569Sphilip# possible race conditions.
443227569Sphilipif checkyesno update_motd; then
444227569Sphilip	echo 'updating motd.'
445227569Sphilip	if [ ! -f /etc/motd ]; then
446227569Sphilip		install -c -o root -g wheel -m 664 /dev/null /etc/motd
447227569Sphilip	fi
448227569Sphilip	T=/etc/_motd
449227569Sphilip	rm -f $T
450227569Sphilip	sysctl -n kern.version | sed 1q > $T
451227569Sphilip	echo "" >> $T
452227569Sphilip	sed '1,/^$/d' < /etc/motd >> $T
453227569Sphilip	cmp -s $T /etc/motd || cp $T /etc/motd
454227569Sphilip	rm -f $T
455227569Sphilipfi
456227569Sphilip
457227569Sphilipif checkyesno accounting; then
458227569Sphilip	if [ -f /var/account/acct ]; then
459227569Sphilip		echo 'turning on accounting'
460227569Sphilip		accton /var/account/acct
461227569Sphilip	else
462227569Sphilip		logger -s "WARNING: /var/account/acct doesn't exist; " \
463293769Sarybchik		    "accounting not enabled."
464299608Sarybchik	fi
465293769Sarybchikfi
466293769Sarybchik
467293769Sarybchikecho -n standard daemons:
468293769Sarybchikif checkyesno cron; then
469293769Sarybchik	echo -n ' cron';		cron
470293769Sarybchikfi
471293769Sarybchikecho '.'
472293769Sarybchik
473293769Sarybchik# now start all the other daemons
474293769Sarybchikecho -n starting network daemons:
475293769Sarybchik
476293769Sarybchikif checkyesno gated && checkyesno routed; then
477293769Sarybchik	echo
478293769Sarybchik	logger -s "WARNING: gated and routed both requested to be run: " \
479293769Sarybchik	    "running only gated."
480293769Sarybchik	routed=NO
481293769Sarybchikfi
482293769Sarybchik
483293769Sarybchikif checkyesno gated; then
484293769Sarybchik	if [ -r /etc/gated.conf ]; then
485299608Sarybchik		echo -n ' gated';		gated $gated_flags
486293769Sarybchik	else
487293769Sarybchik		echo
488293769Sarybchik		logger -s "WARNING: no /etc/gated.conf; gated not started."
489293769Sarybchik	fi
490293769Sarybchikfi
491299608Sarybchik
492293769Sarybchikif checkyesno routed; then
493293769Sarybchik	echo -n ' routed';		routed $routed_flags
494293769Sarybchikfi
495293769Sarybchik
496293769Sarybchikif checkyesno mrouted; then
497293769Sarybchik	echo -n ' mrouted';		mrouted $mrouted_flags
498293769Sarybchikfi
499293769Sarybchik
500293769Sarybchikif checkyesno route6d; then
501293769Sarybchik	echo -n ' route6d';		route6d $route6d_flags
502299608Sarybchikfi
503293769Sarybchik
504293769Sarybchikif checkyesno rtsold; then
505293769Sarybchik	if checkyesno ip6forwarding; then
506293769Sarybchik		echo
507293769Sarybchik		logger -s "WARNING: rtsold cannot be used on IPv6 router."
508283514Sarybchik	else
509299608Sarybchik		echo -n ' rtsold';	rtsold $rtsold_flags
510227569Sphilip	fi
511227569Sphilipfi
512227569Sphilip
513227569Sphilipif checkyesno rtadvd; then
514227569Sphilip	if checkyesno ip6forwarding; then
515227569Sphilip		echo -n ' rtadvd';	rtadvd $rtadvd_flags
516227569Sphilip	else
517227569Sphilip		echo
518227569Sphilip		logger -s "WARNING: rtadvd cannot be used on IPv6 host."
519227569Sphilip	fi
520227569Sphilipfi
521227569Sphilip
522227569Sphilipif checkyesno timed; then
523227569Sphilip	echo -n ' timed'; 		timed $timed_flags
524227569Sphilipfi
525227569Sphilip
526227569Sphilipif checkyesno xntpd; then
527227569Sphilip	echo -n ' xntpd';		xntpd $xntpd_flags
528227569Sphilipfi
529227569Sphilip
530227569Sphilipif checkyesno dhcpd; then
531227569Sphilip	if [ -r /etc/dhcpd.conf ]; then
532227569Sphilip		echo -n ' dhcpd';		dhcpd $dhcpd_flags
533227569Sphilip	else
534227569Sphilip		echo
535227569Sphilip		logger -s "WARNING: /etc/dhcpd.conf not readable; " \
536227569Sphilip		    "dhcpd not started."
537227569Sphilip	fi
538227569Sphilipelif checkyesno dhcrelay; then
539227569Sphilip	echo -n ' dhcrelay';		dhcrelay $dhcrelay_flags
540227569Sphilipfi
541227569Sphilip
542227569Sphilipif checkyesno rwhod; then
543227569Sphilip	echo -n ' rwhod';		rwhod
544227569Sphilipfi
545227569Sphilip
546227569Sphilipif checkyesno lpd; then
547227569Sphilip	echo -n ' lpd';			lpd $lpd_flags
548227569Sphilipfi
549227569Sphilip
550227569Sphilip# We call sendmail with a full path so that SIGHUP works.
551227569Sphilipif checkyesno sendmail; then
552227569Sphilip	if [ -r /etc/sendmail.cf ]; then
553227569Sphilip		echo -n ' sendmail';	/usr/sbin/sendmail $sendmail_flags
554227569Sphilip	else
555227569Sphilip		echo
556227569Sphilip		logger -s "WARNING: /etc/sendmail.cf not readable; " \
557227569Sphilip		    "sendmail not started."
558227569Sphilip	fi
559227569Sphilipfi
560227569Sphilip
561227569Sphilip# Start xfs before boot daemons, so its ready before client xterminals.
562227569Sphilipif checkyesno xfs; then
563227569Sphilip	echo -n ' xfs';			xfs $xfs_flags
564283514Sarybchik	sleep 2
565299608Sarybchikfi
566227569Sphilip
567227569Sphilipif checkyesno rarpd; then
568227569Sphilip	if [ -r /etc/ethers ]; then
569227569Sphilip		echo -n ' rarpd';	rarpd $rarpd_flags
570227569Sphilip	else
571227569Sphilip		echo
572227569Sphilip		logger -s "WARNING: /etc/ethers not readable; " \
573283514Sarybchik		    "rarpd not started."
574227569Sphilip	fi
575299320Sarybchikfi
576
577if checkyesno rbootd; then
578	if [ -r /etc/rbootd.conf ]; then
579		echo -n ' rbootd';	rbootd $rbootd_flags
580	else
581		echo
582		logger -s "WARNING: /etc/rbootd.conf not readable; " \
583		    "rbootd not started."
584	fi
585fi
586
587if checkyesno mopd; then
588	echo -n ' mopd';		mopd $mopd_flags
589fi
590
591if checkyesno apmd; then
592	echo -n ' apmd';		apmd $apmd_flags
593fi
594
595if checkyesno screenblank; then
596	echo -n ' screenblank';		screenblank $screenblank_flags
597fi
598
599if checkyesno inetd; then
600	if [ -r /etc/inetd.conf ]; then
601		echo -n ' inetd';	inetd $inetd_flags
602	else
603		echo
604		logger -s "WARNING: /etc/inetd.conf not readable; " \
605		    "inetd not started."
606	fi
607fi
608
609echo '.'
610
611# Kerberos runs ONLY on the Kerberos server machine
612if checkyesno kerberos; then
613	echo -n 'starting kerberos daemons:'
614	echo -n ' kerberos';	kerberos >> /var/log/kerberos.log &
615	echo -n ' kadmind';	kadmind -n >> /var/log/kadmind.log &
616	echo '.'
617fi
618
619# xdm after wscons - need a virtual screen for X
620if checkyesno xdm; then
621	echo 'starting xdm'
622	xdm $xdm_flags
623fi
624
625. /etc/rc.local
626
627date
628exit 0
629