rc revision 4826
1251881Speter#!/bin/sh
2251881Speter#	$Id: rc,v 1.40 1994/11/17 08:28:02 smace Exp $
3251881Speter#	From: @(#)rc	5.27 (Berkeley) 6/5/91
4251881Speter
5251881Speter# System startup script run by init on autoboot
6251881Speter# or after single-user.
7251881Speter# Output and error are redirected to console by init,
8251881Speter# and the console is the controlling terminal.
9251881Speter
10251881Speterstty status '^T'
11251881Speter
12251881Speter# Set shell to ignore SIGINT (2), but not children;
13251881Speter# shell catches SIGQUIT (3) and returns to single user after fsck.
14251881Spetertrap : 2
15251881Spetertrap : 3	# shouldn't be needed
16251881Speter
17251881SpeterHOME=/; export HOME
18251881SpeterPATH=/sbin:/bin:/usr/sbin:/usr/bin
19251881Speterexport PATH
20251881Speter
21251881Speterswapon -a
22251881Speter
23251881Speterif [ $1x = autobootx ]
24251881Speterthen
25251881Speter	echo Automatic reboot in progress...
26251881Speter	fsck -p
27251881Speter	case $? in
28251881Speter	0)
29251881Speter		;;
30251881Speter	2)
31251881Speter		exit 1
32251881Speter		;;
33251881Speter	4)
34251881Speter		reboot
35251881Speter		echo "reboot failed... help!"
36251881Speter		exit 1
37299742Sdim		;;
38251881Speter	8)
39251881Speter		echo "Automatic file system check failed... help!"
40251881Speter		exit 1
41251881Speter		;;
42251881Speter	12)
43251881Speter		echo "Reboot interrupted"
44251881Speter		exit 1
45251881Speter		;;
46251881Speter	130)
47251881Speter		# interrupt before catcher installed
48251881Speter		exit 1
49251881Speter		;;
50251881Speter	*)
51251881Speter		echo "Unknown error in reboot"
52299742Sdim		exit 1
53251881Speter		;;
54251881Speter	esac
55251881Speterelse
56251881Speter	echo Skipping disk checks ...
57251881Speterfi
58251881Speter
59251881Spetertrap "echo 'Reboot interrupted'; exit 1" 3
60251881Speter
61251881Speter# root must be read/write both for NFS diskless and for VFS LKMs before
62251881Speter# proceeding any further.
63251881Spetermount -u -o rw /
64251881Speter
65251881Speterumount -a >/dev/null 2>&1
66251881Spetermount -a -t nonfs
67251881Speter
68251881Speter# This stuff needed for proper daemons tuning, comsat f.e.
69251881Speter# See profile and csh.login also.
70251881Speter# Uncomment next line if you want to setup your 8-bit locale at program
71251881Speter# startup automatically
72251881Speter# ENABLE_STARTUP_LOCALE=; export ENABLE_STARTUP_LOCALE
73251881Speter# Uncomment next line to activate russian locale
74251881Speter# LANG=ru_SU.KOI8-R; export LANG
75251881Speter
76251881Speter# If the machine runs wall CMOS clock (compatible with MSDOS),
77251881Speter# activate following line by creating empty file /etc/wall_cmos_clock
78251881Speter# If this file not exist, following line does nothing (assumed
79251881Speter# the machine runs UTC CMOS clock). See adjkerntz(8) for details.
80251881Speteradjkerntz -i
81251881Speter
82251881Speter# configure serial devices
83251881Speterif [ -f /etc/rc.serial ]
84251881Speterthen
85251881Speter	sh /etc/rc.serial
86251881Speterfi
87251881Speter
88251881Speter# set hostname, turn on network
89251881Speterecho 'starting network'
90251881Speter. /etc/netstart
91251881Speter
92251881Speter# clean up left-over files
93251881Speterrm -f /etc/nologin
94251881Speterrm -f /var/spool/lock/*
95251881Speterrm -f /var/spool/uucp/.Temp/*
96251881Speter(cd /var/run && { rm -rf -- *; cp /dev/null utmp; chmod 644 utmp; })
97251881Speter
98251881Speterecho -n 'starting system logger'
99251881Speterrm -f /dev/log
100251881Spetersyslogd
101251881Speter
102251881Speter# $timedflags is imported from /etc/netstart;
103251881Speter# if $timedflags == NO, timed isn't run.
104251881Speterif [ X${timedflags} != X"NO" ]; then
105251881Speter	echo -n ', time daemon'; timed $timedflags
106251881Speterfi
107251881Speterecho '.'
108251881Speter
109251881Speter# /var/crash should be a directory or a symbolic link
110251881Speter# to the crash directory if core dumps are to be saved.
111251881Speterif [ X${savecore} != X"NO" -a -d /var/crash ]; then
112251881Speter	echo checking for core dump...
113251881Speter	savecore /var/crash
114251881Speterfi
115251881Speter
116251881Speter#				echo -n 'checking quotas:'
117251881Speter#quotacheck -a
118251881Speter#				echo ' done.'
119251881Speter#quotaon -a
120251881Speter
121251881Speter# build ps databases
122251881Speterkvm_mkdb 
123251881Speterdev_mkdb
124251881Speter
125251881Speterchmod 666 /dev/tty[pqrs]*
126251881Speter
127251881Speter# check the password temp/lock file
128251881Speterif [ -f /etc/ptmp ]
129251881Speterthen
130251881Speter	logger -s -p auth.err \
131251881Speter	'password file may be incorrect -- /etc/ptmp exists'
132251881Speterfi
133251881Speter
134251881Speter# Recover vi editor files.
135251881Spetervirecovery=/var/tmp/vi.recover/recover.*
136251881Speterif [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then
137251881Speter	echo 'Recovering vi editor sessions'
138251881Speter	for i in $virecovery; do
139251881Speter		sendmail -t < $i
140251881Speter	done
141251881Speterfi
142251881Speter
143251881Speterecho clearing /tmp
144251881Speter
145251881Speter# prune quickly with one rm, then use find to clean up /tmp/[lq]*
146251881Speter# (not needed with mfs /tmp, but doesn't hurt there...)
147251881Speter(cd /tmp && rm -rf [a-km-pr-zA-Z]* &&
148251881Speter    find -d . ! -name . ! -name lost+found ! -name quotas -exec rm -rf -- {} \;)
149251881Speter
150251881Speter# echo 'turning on accounting';	accton /var/account/acct
151251881Speter
152251881Speterecho -n standard daemons:
153251881Speterecho -n ' cron';		cron
154251881Speterecho '.'
155251881Speter
156251881Speterecho -n starting network daemons:
157251881Speter
158251881Speter# Portmapper should always be run, to provide RPC services for inetd.
159251881Speterif [ -x /usr/sbin/portmap ]; then
160251881Speter	echo -n ' portmap';		portmap
161251881Speterfi
162251881Speter
163251881Speter# $gated and $routedflags are imported from /etc/netstart.
164251881Speter# If $gated == YES, gated is used; otherwise routed.
165251881Speter# If $routedflags == NO, routed isn't run.
166251881Speterif [ X${gated} = X"YES" -a -r /etc/gated.conf ]; then
167251881Speter	echo -n ' gated';	gated $gatedflags
168251881Speterelif [ X"${routedflags}" != X"NO" ]; then
169251881Speter	echo -n ' routed';	routed $routedflags
170251881Speterfi
171251881Speter
172251881Speterif [ X${name_server} = X"YES" -a -r /etc/named.boot ]; then
173251881Speter	echo -n ' named';		named
174251881Speterfi
175251881Speter
176251881Speter# $ntpdate and $xntpdflags are imported from /etc/netstart.
177251881Speter# If $ntpdate != NO, run ntpdate $ntpdate to set the date correctly.
178251881Speter# If $xntpdflags != NO, start xntpd.
179251881Speterif [ X"${ntpdate}" != X"NO" ]; then
180251881Speter	echo ' ntpdate';	ntpdate $ntpdate
181251881Speterfi
182251881Speter
183251881Speterif [ X"${xntpdflags}" != X"NO" ]; then
184251881Speter	if [ X"${tickadjflags}" != X"NO" ]; then
185251881Speter		echo 'adjusting kernel for xntpd'; tickadj ${tickadjflags--A}
186251881Speter	fi
187251881Speter	echo 'starting xntpd';	xntpd ${xntpdflags}
188251881Speterfi
189251881Speter
190251881Speterif [ X"${ntpdate}" != X"NO" -o X"${xntpdflags}" != X"NO" ]; then
191251881Speter	echo -n 'starting more network daemons:'
192251881Speterfi
193251881Speter
194251881Speter# $rwhod is imported from /etc/netstart;
195251881Speter# if $rwhod is set to something other than NO, rwhod is run.
196251881Speterif [ X"${rwhod}" != X"NO" ]; then
197251881Speter	echo -n ' rwhod';	rwhod
198251881Speterfi
199251881Speter
200251881Speterecho -n ' printer';		lpd
201251881Speter
202251881Speterif [ X${nfs_server} = X"YES" -a -r /etc/exports ]; then
203251881Speter	echo -n ' mountd';		mountd
204251881Speter	echo -n ' nfsd';		nfsd -u -t 4
205251881Speterfi
206251881Speter
207251881Speterif [ X"${nfs_client}" != X"NO" ]; then
208251881Speter	echo -n ' nfsiod';		nfsiod -n 4
209251881Speterfi
210251881Speter
211251881Speterif [ X"${amdflags}" != X"NO" ]; then
212251881Speter	echo -n ' amd';			amd ${amdflags}
213251881Speterfi
214251881Speter
215251881Speter# $sendmail_flags is imported from /etc/netstart;
216251881Speter# if $sendmail_flags is something other than NO, sendmail is run.
217251881Speterif [ X"${sendmail_flags}" != X"NO" -a -r /etc/sendmail.cf ]; then
218251881Speter	echo -n ' sendmail';		sendmail ${sendmail_flags} 
219251881Speterfi
220251881Speter
221251881Speterecho -n ' inetd';		inetd
222251881Speterecho '.'
223251881Speter
224251881Spetermount -a -t nfs >/dev/null 2>&1 &	# XXX shouldn't need background
225251881Speter
226251881Speter# if [ -x /usr/libexec/xtend ]; then
227251881Speter# 	echo -n ' xtend';   /usr/libexec/xtend
228251881Speter# fi
229251881Speter
230251881Speter# Make shared lib searching a little faster.  Leave /usr/lib first if you
231251881Speter# add your own entries or you may come to grief.
232251881Speterif [ -x /sbin/ldconfig ]; then
233251881Speter	_LDC=/usr/lib
234251881Speter	if [ -d /usr/X11R6/lib ]; then _LDC="${_LDC} /usr/X11R6/lib" ; fi
235251881Speter	if [ -d /usr/X386/lib ]; then _LDC="${_LDC} /usr/X386/lib" ; fi
236251881Speter	if [ -d /usr/local/lib ]; then _LDC="${_LDC} /usr/local/lib" ; fi
237251881Speter	if [ -d /usr/gnu/lib ]; then _LDC="${_LDC} /usr/gnu/lib" ; fi
238251881Speter	echo 'setting ldconfig path:' ${_LDC}
239251881Speter	ldconfig ${_LDC}
240251881Speterfi
241251881Speter
242251881Speter. /etc/rc.local
243251881Speter
244251881Speterdate
245251881Speter
246251881Speterexit 0
247251881Speter