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