diff options
Diffstat (limited to 'etc/rc')
-rw-r--r-- | etc/rc | 975 |
1 files changed, 15 insertions, 960 deletions
@@ -50,973 +50,28 @@ HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin export HOME PATH -# check_rcng() is run in a subshell solely to determine the -# RCNG mode. We do not want to pollute our variable space -# too soon so the procedure must be run in a subshell. An -# exit code of 3 indicates RCNG is enabled. -# -check_rcng() -{ - if [ -r /etc/defaults/rc.conf ]; then - . /etc/defaults/rc.conf - source_rc_confs - elif [ -r /etc/rc.conf ]; then - . /etc/rc.conf - fi - - # Diskless setups have to depend on a different mechanism since - # their config files haven't been retargeted yet. - # - [ -e /.rcng_yes ] && rc_ng="YES" - case ${rc_ng} in - [Yy][Ee][Ss]) - exit 3 - ;; - *) - exit 0 - ;; - esac -} - -( check_rcng ) -if [ $? = 3 ]; then - rc_ng=YES -else - rc_ng=NO - echo -n ; sleep 1 ; echo -n ; sleep 1 ; echo -n - echo '' - echo '**** The old versions of the rc scripts are deprecated, and' - echo ' will soon be removed. Make sure to update /etc and' - echo ' check that rc_ng is YES in /etc/defaults/rc.conf.' - echo ' Please report any rc problems to freebsd-rc@yahoogroups.com' - echo ' and/or freebsd-current@freebsd.org.' - echo '' - sleep 3 -fi - -case ${rc_ng} in -YES) - . /etc/rc.subr - - # Note: the system configuration files are loaded as part of - # the RCNG system (rc.d/rccond). Do not load them here as it may - # interfere with diskless booting. - # - if [ "$1" = autoboot ]; then - autoboot=yes - _boot="faststart" - rc_fast=yes # run_rc_command(): do fast booting - else - autoboot=no - _boot="start" - fi - - os=`eval ${CMD_OSTYPE}` - files=`rcorder -k ${os} -s nostart /etc/rc.d/* 2>/dev/null` - - for _rc_elem in ${files}; do - run_rc_script ${_rc_elem} ${_boot} - done - - echo '' - date - exit 0 - ;; -*) - # fall-through to the old rc scripts - ;; -esac - -bootmode=$1 - -# BOOTP diskless boot. We have to run the rc file early in order to -# retarget various config files. -# -if [ -r /etc/rc.diskless1 ]; then - dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null` - if [ ${dlv:=0} != 0 ]; then - . /etc/rc.diskless1 - fi -fi - -# If there is a global system configuration file, suck it in. -# -if [ -r /etc/defaults/rc.conf ]; then - . /etc/defaults/rc.conf - source_rc_confs -elif [ -r /etc/rc.conf ]; then - . /etc/rc.conf -fi - -# XXX - Deprecated variable name support -# for rpcbind and ntpd -# -[ -n "$portmap_enable" ] && rpcbind_enable="$portmap_enable" -[ -n "$portmap_program" ] && rpcbind_program="$portmap_program" -[ -n "$portmap_flags" ] && rpcbind_flags="$portmap_flags" -[ -n "$single_mountd_enable" ] && mountd_enable="$single_mountd_enable" -[ -n "$xntpd_enable" ] && ntpd_enable="$xntpd_enable" -[ -n "$xntpd_program" ] && ntpd_program="$xntpd_program" -[ -n "$xntpd_flags" ] && ntpd_flags="$xntpd_flags" - -feed_dev_random() { - if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then -# echo "Using ${1} as an entropy file" - cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null - fi -} - -chkdepend() { - svc=$1 - svc_var=$2 - dep=$3 - dep_var=$4 - - eval svc_val=\${$svc_var} - eval dep_val=\${$dep_var} - - case ${svc_val} in - [Yy][Ee][Ss]) - case ${dep_val} in - [Yy][Ee][Ss]) - ;; - *) - eval ${dep_var}="YES" - echo "DEPENDENCY NOTE: ${dep} will be enabled" \ - "to support ${svc}" - ;; - esac - ;; - esac -} - -chkdepend amd amd_enable rpcbind rpcbind_enable -chkdepend amd amd_enable NFS nfs_client_enable -chkdepend NFS nfs_server_enable rpcbind rpcbind_enable -chkdepend NIS nis_server_enable rpcbind rpcbind_enable -chkdepend NIS nis_client_enable rpcbind rpcbind_enable - -# Enable dumpdev early so that a crash during the boot process can be caught. -# -case ${dumpdev} in -[Nn][Oo] | '') - dumpdev='NO' - ;; -*) - /sbin/dumpon -v ${dumpdev} - ;; -esac - -# Enable harvesting of entropy via devices. The sooner this happens the -# better so that we can take advantage of the boot process. -# -echo -n 'Entropy harvesting:' - -case ${harvest_interrupt} in -[Nn][Oo]) - ;; -*) - if [ -w /dev/random ]; then - /sbin/sysctl kern.random.sys.harvest.interrupt=1 >/dev/null - echo -n ' interrupts' - fi - ;; -esac - -case ${harvest_ethernet} in -[Nn][Oo]) - ;; -*) - if [ -w /dev/random ]; then - /sbin/sysctl kern.random.sys.harvest.ethernet=1 >/dev/null - echo -n ' ethernet' - fi - ;; -esac - -case ${harvest_p_to_p} in -[Nn][Oo]) - ;; -*) - if [ -w /dev/random ]; then - /sbin/sysctl kern.random.sys.harvest.point_to_point=1 >/dev/null - echo -n ' point_to_point' - fi - ;; -esac - -echo '.' - -# First pass at reseeding /dev/random. -# -case ${entropy_file} in -[Nn][Oo] | '') - ;; -*) - if [ -w /dev/random ]; then - feed_dev_random "${entropy_file}" - fi - ;; -esac - -# XXX temporary until we can get the entropy -# harvesting rate up -# Entropy below is not great, -# but better than nothing. -( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \ - | dd of=/dev/random bs=8k 2>/dev/null -cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null - -# Configure ccd devices. -# -if [ -r /etc/ccd.conf ]; then - ccdconfig -C -fi - -case ${start_vinum} in -[Yy][Ee][Ss]) - vinum start - ;; -esac - -swapon -a - -# Last chance to do things before potentially waiting for -# operator to do fsck related tasks -if [ -r /etc/rc.early ]; then - . /etc/rc.early -fi - -case ${bootmode} in -autoboot) - echo 'Automatic boot in progress...' - case ${background_fsck} in - [Yy][Ee][Ss]) - fsck -F -p - ;; - *) - fsck -p - ;; - esac - case $? in - 0) - ;; - 2) - exit 1 - ;; - 4) - reboot - echo 'Reboot failed... help!' - exit 1 - ;; - 8) - case ${fsck_y_enable} in - [Yy][Ee][Ss]) - echo 'File system preen failed, trying fsck -y . . .' - fsck -y - case $? in - 0) - ;; - *) - echo 'Automatic filesystem check failed . . . help!' - exit 1 - ;; - esac - ;; - *) - echo 'Automatic filesystem check failed . . . help!' - exit 1 - ;; - esac - ;; - 12) - echo 'Reboot interrupted' - exit 1 - ;; - 130) - # interrupt before catcher installed - exit 1 - ;; - *) - echo 'Unknown error in reboot' - exit 1 - ;; - esac - ;; -*) - echo 'Skipping disk checks ...' - ;; -esac - -set -T -trap "echo 'Reboot interrupted'; exit 1" 3 - -# root normally must be read/write, but if this is a BOOTP NFS -# diskless boot it does not have to be. -# -case ${root_rw_mount} in -[Nn][Oo] | '') - ;; -*) - if ! mount -u -o rw / ; then - echo 'Mounting root filesystem rw failed, startup aborted' - exit 1 - fi - ;; -esac - -umount -a >/dev/null 2>&1 - -# Set up the list of network filesystem types for which mounting should be -# delayed until after network initialization. -networkfs_types='nfs:NFS smbfs:SMB portalfs:PORTAL' -case ${extra_netfs_types} in -[Nn][Oo]) - ;; -*) - networkfs_types="${networkfs_types} ${extra_netfs_types}" - ;; -esac - -# Mount everything except nfs filesystems. -mount_excludes='no' -for i in ${networkfs_types}; do - fstype=${i%:*} - mount_excludes="${mount_excludes}${fstype}," -done -mount_excludes=${mount_excludes%,} -mount -a -t ${mount_excludes} - -case $? in -0) - ;; -*) - echo 'Mounting /etc/fstab filesystems failed, startup aborted' - exit 1 - ;; -esac - -# Run custom disk mounting function here -# -if [ -n "${diskless_mount}" -a -r "${diskless_mount}" ]; then - sh ${diskless_mount} -fi - -# If we booted a special kernel remove the record so we will boot -# the default kernel next time -rm -f /boot/nextboot.conf - -# Reseed /dev/random with previously stored entropy. -case ${entropy_dir} in -[Nn][Oo]) - ;; -*) - entropy_dir=${entropy_dir:-/var/db/entropy} - if [ -d "${entropy_dir}" ]; then - if [ -w /dev/random ]; then - for seedfile in ${entropy_dir}/*; do - feed_dev_random "${seedfile}" - done - fi - fi - ;; -esac - -case ${entropy_file} in -[Nn][Oo] | '') - ;; -*) - if [ -w /dev/random ]; then - feed_dev_random "${entropy_file}" - fi - ;; -esac - -adjkerntz -i - -purgedir() { - local dir file - - if [ $# -eq 0 ]; then - purgedir . - else - for dir - do - ( - cd "$dir" && for file in .* * - do - [ ."$file" = .. -o ."$file" = ... ] && continue - if [ -d "$file" -a ! -L "$file" ] - then - purgedir "$file" - else - rm -f -- "$file" - fi - done - ) - done - fi -} - -clean_var() { - if [ -d /var/run -a ! -f /var/run/clean_var ]; then - purgedir /var/run - # Keep a copy of the boot messages around - dmesg >/var/run/dmesg.boot - # And an initial utmp file - (cd /var/run && cp /dev/null utmp && chmod 644 utmp;) - >/var/run/clean_var - fi - if [ -d /var/spool/lock -a ! -f /var/spool/lock/clean_var ]; then - purgedir /var/spool/lock - >/var/spool/lock/clean_var - fi - rm -rf /var/spool/uucp/.Temp/* -} - -# network_pass1() *may* end up writing stuff to /var - we don't want to -# remove it immediately afterwards - *nor* do we want to fail to clean -# an NFS-mounted /var. -rm -f /var/run/clean_var /var/spool/lock/clean_var -clean_var - -# Add additional swapfile, if configured. -# -case ${swapfile} in -[Nn][Oo] | '') - ;; -*) - if [ -w "${swapfile}" -a -c /dev/mdctl ]; then - echo "Adding ${swapfile} as additional swap" - mdev=`mdconfig -a -t vnode -f ${swapfile}` && swapon /dev/${mdev} - fi - ;; -esac - -# Early pass to set the variables we can -# -if [ -r /etc/rc.sysctl ]; then - sh /etc/rc.sysctl first -fi - -# Configure serial devices -# -if [ -r /etc/rc.serial ]; then - . /etc/rc.serial -fi - -# Start up PC-card configuration -# -if [ -r /etc/rc.pccard ]; then - . /etc/rc.pccard -fi - -# Start up the initial network configuration. -# -if [ -r /etc/rc.network ]; then - . /etc/rc.network # We only need to do this once. - network_pass1 -fi - -case ${ipv6_enable} in -[Yy][Ee][Ss]) - if [ -r /etc/rc.network6 ]; then - . /etc/rc.network6 # We only need to do this once also. - network6_pass1 - fi - ;; -esac - -# Mount NFS filesystems if present in /etc/fstab -# -# XXX When the vfsload() issues with nfsclient support and related sysctls -# have been resolved, this block can be removed, and the condition that -# skips nfs in the following block (for "other network filesystems") can -# be removed. -case "`mount -d -a -t nfs 2> /dev/null`" in -*mount_nfs*) - # Handle absent nfs client support - nfsclient_in_kernel=0 - if sysctl vfs.nfs >/dev/null 2>&1; then - nfsclient_in_kernel=1 - else - kldload nfsclient && nfsclient_in_kernel=1 - fi - - case ${nfsclient_in_kernel} in - 1) - echo -n 'Mounting NFS filesystem:' - mount -a -t nfs - echo '.' - ;; - *) - echo 'Warning: nfs mount requested, but no nfs client in kernel' - ;; - esac - ;; -esac - -# Mount other network filesystems if present in /etc/fstab -for i in ${networkfs_types}; do - fstype=${i%:*} - fsdecr=${i#*:} - - if [ "${fstype}" = "nfs" ]; then - continue - fi - case "`mount -d -a -t ${fstype}`" in - *mount_${fstype}*) - echo -n "Mounting ${fsdecr} filesystems:" - mount -a -t ${fstype} - echo '.' - ;; - esac -done - -# Whack the pty perms back into shape. -# -if ls /dev/tty[pqrsPQRS]* > /dev/null 2>&1; then - chflags 0 /dev/tty[pqrsPQRS]* - chmod 666 /dev/tty[pqrsPQRS]* - chown root:wheel /dev/tty[pqrsPQRS]* -fi - -# Clean up left-over files -# -clean_var # If it hasn't already been done -rm /var/run/clean_var /var/spool/lock/clean_var - -# Clearing /tmp at boot-time seems to have a long tradition. It doesn't -# help in any way for long-living systems, and it might accidentally -# clobber files you would rather like to have preserved after a crash -# (if not using mfs /tmp anyway). -# -# See also the example of another cleanup policy in /etc/periodic/daily. -# -case ${clear_tmp_enable} in -[Yy][Ee][Ss]) - echo -n '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 quota.user \ - ! -name quota.group -exec rm -rf -- {} \;) - echo '.' - ;; -esac - -# Remove X lock files, since they will prevent you from restarting X11 -# after a system crash. -# -rm -f /tmp/.X*-lock -rm -fr /tmp/.X11-unix -mkdir -m 1777 /tmp/.X11-unix - -# Snapshot any kernel -c changes back to disk here <someday>. -# This has changed with ELF and /kernel.config. - -# Load LOMAC(4) security if wanted. -case ${lomac_enable} in -[Yy][Ee][Ss]) - kldload mac_lomac >/dev/null 2>&1 - ;; -esac - -echo -n 'Additional daemons:' +. /etc/rc.subr -# Start system logging and name service. Named needs to start before syslogd -# if you don't have a /etc/resolv.conf. +# Note: the system configuration files are loaded as part of +# the RCNG system (rc.d/rccond). Do not load them here as it may +# interfere with diskless booting. # -case ${syslogd_enable} in -[Yy][Ee][Ss]) - # Transitional symlink (for the next couple of years :) until all - # binaries have had a chance to move towards /var/run/log. - if [ ! -L /dev/log ]; then - # might complain for r/o root f/s - ln -sf /var/run/log /dev/log - fi - - rm -f /var/run/log - echo -n ' syslogd'; - ${syslogd_program:-/usr/sbin/syslogd} ${syslogd_flags} - ;; -esac - -echo '.' - -# Build device name databases if we are not using DEVFS -# -if sysctl vfs.devfs.generation > /dev/null 2>&1 ; then - rm -f /var/run/dev.db +if [ "$1" = autoboot ]; then + autoboot=yes + _boot="faststart" + rc_fast=yes # run_rc_command(): do fast booting else - dev_mkdb + autoboot=no + _boot="start" fi -# $dumpdir should be a directory or a symbolic link -# to the crash directory if core dumps are to be saved. -# -if [ "${dumpdev}" != 'NO' ]; then - case ${dumpdir} in - '') - dumpdir='/var/crash' - ;; - [Nn][Oo]) - dumpdir='NO' - ;; - esac - - if [ "${dumpdir}" != 'NO' ]; then - echo -n 'Checking for core dump: ' - /sbin/savecore ${savecore_flags} "${dumpdir}" - fi -fi - -if [ -n "${network_pass1_done}" ]; then - network_pass2 -fi - -# Enable/Check the quotas (must be after ypbind if using NIS) -# -case ${enable_quotas} in -[Yy][Ee][Ss]) - case ${check_quotas} in - [Yy][Ee][Ss]) - echo -n 'Checking quotas:' - quotacheck -a - echo ' done.' - ;; - esac - - echo -n 'Enabling quotas:' - quotaon -a - echo ' done.' - ;; -esac - -if [ -n "${network_pass2_done}" ]; then - network_pass3 -fi - -# Check the password temp/lock file -# -if [ -e /etc/ptmp ]; then - logger -s -p auth.err \ - "password file may be incorrect -- /etc/ptmp exists" -fi - -case ${accounting_enable} in -[Yy][Ee][Ss]) - if [ -d /var/account ]; then - echo 'Turning on accounting:' - if [ ! -e /var/account/acct ]; then - touch /var/account/acct - fi - accton /var/account/acct - fi - ;; -esac - -# Make shared lib searching a little faster. Leave /usr/lib first if you -# add your own entries or you may come to grief. -# -ldconfig="/sbin/ldconfig" -case ${ldconfig_insecure} in -[Yy][Ee][Ss]) - ldconfig="${ldconfig} -i" - ;; -esac -if [ -x /sbin/ldconfig ]; then - _LDC=/usr/lib - for i in ${ldconfig_paths}; do - if [ -d "${i}" ]; then - _LDC="${_LDC} ${i}" - fi - done - echo 'ELF ldconfig path:' ${_LDC} - ${ldconfig} ${_LDC} - - # Legacy aout support for i386 only - case `sysctl -n hw.machine_arch` in - i386) - # Default the a.out ldconfig path. - : ${ldconfig_paths_aout=${ldconfig_paths}} - _LDC=/usr/lib/aout - for i in ${ldconfig_paths_aout}; do - if [ -d "${i}" ]; then - _LDC="${_LDC} ${i}" - fi - done - echo 'a.out ldconfig path:' ${_LDC} - ${ldconfig} -aout ${_LDC} - ;; - esac -fi - -# Now start up miscellaneous daemons that don't belong anywhere else -# -echo -n 'Starting standard daemons:' -case ${inetd_enable} in -[Nn][Oo]) - ;; -*) - echo -n ' inetd'; ${inetd_program:-/usr/sbin/inetd} ${inetd_flags} - ;; -esac - -case ${cron_enable} in -[Nn][Oo]) - ;; -*) - echo -n ' cron'; ${cron_program:-/usr/sbin/cron} ${cron_flags} - ;; -esac - -case ${lpd_enable} in -[Yy][Ee][Ss]) - echo -n ' printer'; ${lpd_program:-/usr/sbin/lpd} ${lpd_flags} - ;; -esac - -case ${sshd_enable} in -[Yy][Ee][Ss]) - if [ -x ${sshd_program:-/usr/sbin/sshd} ]; then - echo -n ' sshd'; - ${sshd_program:-/usr/sbin/sshd} ${sshd_flags} - fi - ;; -esac - -case ${usbd_enable} in -[Yy][Ee][Ss]) - echo -n ' usbd'; /usr/sbin/usbd ${usbd_flags} - ;; -esac - -case ${mta_start_script} in -/*) - if [ -r ${mta_start_script} ]; then - sh ${mta_start_script} - fi - ;; -esac - -echo '.' - -# Recover vi editor files. -find /var/tmp/vi.recover ! -type f -a ! -type d -delete -vibackup=`echo /var/tmp/vi.recover/vi.*` -if [ "${vibackup}" != '/var/tmp/vi.recover/vi.*' ]; then - echo -n 'Recovering vi editor sessions:' - for i in /var/tmp/vi.recover/vi.*; do - # Only test files that are readable. - if [ ! -r "${i}" ]; then - continue - fi - - # Unmodified nvi editor backup files either have the - # execute bit set or are zero length. Delete them. - if [ -x "${i}" -o ! -s "${i}" ]; then - rm -f "${i}" - fi - done +os=`eval ${CMD_OSTYPE}` +files=`rcorder -k ${os} -s nostart /etc/rc.d/* 2>/dev/null` - # It is possible to get incomplete recovery files, if the editor - # crashes at the right time. - virecovery=`echo /var/tmp/vi.recover/recover.*` - if [ "${virecovery}" != "/var/tmp/vi.recover/recover.*" ]; then - for i in /var/tmp/vi.recover/recover.*; do - # Only test files that are readable. - if [ ! -r "${i}" ]; then - continue - fi - - # Delete any recovery files that are zero length, - # corrupted, or that have no corresponding backup file. - # Else send mail to the user. - recfile=`awk '/^X-vi-recover-path:/{print $2}' < "${i}"` - if [ -n "${recfile}" -a -s "${recfile}" ]; then - sendmail -t < "${i}" - else - rm -f "${i}" - fi - done - fi - echo '.' -fi - -# Make a bounds file for msgs(1) if there isn't one already -# -if [ -d /var/msgs -a ! -f /var/msgs/bounds -a ! -L /var/msgs/bounds ]; then - echo 0 > /var/msgs/bounds -fi - -case ${update_motd} in -[Nn][Oo] | '') - ;; -*) - if T=`mktemp /tmp/_motd.XXXXXX`; then - uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' > ${T} - awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' < /etc/motd >> ${T} - cmp -s ${T} /etc/motd || { - cp ${T} /etc/motd - chmod 644 /etc/motd - } - rm -f ${T} - fi - ;; -esac - -# Run rc.devfs if readable to customize devfs -# -if [ -r /etc/rc.devfs ]; then - sh /etc/rc.devfs -fi - -# Configure implementation specific stuff -# -arch=`uname -p` -if [ -r /etc/rc.${arch} ]; then - . /etc/rc.${arch} -fi - -# Configure the system console -# -if [ -r /etc/rc.syscons ]; then - . /etc/rc.syscons -fi - -echo -n 'Additional ABI support:' - -# Load the SysV IPC API if requested. -case ${sysvipc_enable} in -[Yy][Ee][Ss]) - echo -n ' sysvipc' - kldload sysvmsg >/dev/null 2>&1 - kldload sysvsem >/dev/null 2>&1 - kldload sysvshm >/dev/null 2>&1 - ;; -esac - -# Start the Linux binary compatibility if requested. -# -case ${linux_enable} in -[Yy][Ee][Ss]) - echo -n ' linux' - if ! kldstat -v | grep -E 'linux(aout|elf)' > /dev/null; then - kldload linux > /dev/null 2>&1 - fi - if [ -x /compat/linux/sbin/ldconfig ]; then - /compat/linux/sbin/ldconfig - fi - ;; -esac - -# Start the SysVR4 binary emulation if requested. -# -case ${svr4_enable} in -[Yy][Ee][Ss]) - echo -n ' svr4'; kldload svr4 > /dev/null 2>&1 - ;; -esac - -echo '.' - -# Do traditional (but rather obsolete) rc.local file if it exists. If you -# use this file and want to make it programmatic, source /etc/defaults/rc.conf -# in /etc/rc.local and add your custom variables to /etc/rc.conf, as -# shown below. Please do not put local extensions into /etc/rc itself. -# Use /etc/rc.local -# -# ---- rc.local ---- -# if [ -r /etc/defaults/rc.conf ]; then -# . /etc/defaults/rc.conf -# source_rc_confs -# elif [ -r /etc/rc.conf ]; then -# . /etc/rc.conf -# fi -# -# ... additional startup conditionals ... -# ---- rc.local ---- -# -if [ -r /etc/rc.local ]; then - echo -n 'Starting local daemons:' - sh /etc/rc.local - echo '.' -fi - -# For each valid dir in $local_startup, search for init scripts matching *.sh -# -case ${local_startup} in -[Nn][Oo] | '') - ;; -*) - echo -n 'Local package initialization:' - slist="" - if [ -z "${script_name_sep}" ]; then - script_name_sep=" " - fi - for dir in ${local_startup}; do - if [ -d "${dir}" ]; then - for script in ${dir}/*.sh; do - slist="${slist}${script_name_sep}${script}" - done - fi - done - script_save_sep="$IFS" - IFS="${script_name_sep}" - for script in ${slist}; do - if [ -x "${script}" ]; then - (set -T - trap 'exit 1' 2 - ${script} start) - elif [ -f "${script}" -o -L "${script}" ]; then - echo -n " (skipping ${script##*/}, not executable)" - fi - done - IFS="${script_save_sep}" - echo '.' - ;; -esac - -if [ -n "${network_pass3_done}" ]; then - network_pass4 -fi - -# Late pass to set variables we missed the first time -# -if [ -r /etc/rc.sysctl ]; then - sh /etc/rc.sysctl last -fi - -# Raise kernel security level. This should be done only after `fsck' has -# repaired local filesystems if you want the securelevel to be greater than 1. -# -case ${kern_securelevel_enable} in -[Yy][Ee][Ss]) - if [ "${kern_securelevel}" -ge 0 ]; then - echo 'Raising kernel security level: ' - sysctl kern.securelevel=${kern_securelevel} - fi - ;; -esac - -# Start background fsck checks if necessary -case ${background_fsck} in -[Yy][Ee][Ss]) - bgfsck_msg='Starting background file system checks' - if [ ${background_fsck_delay:=0} -gt 0 ]; then - bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds" - fi - echo "${bgfsck_msg}." - - (sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \ - logger -p daemon.notice -t fsck & - ;; -esac +for _rc_elem in ${files}; do + run_rc_script ${_rc_elem} ${_boot} +done echo '' - date - exit 0 - |