FreeNAS Code
This project has moved to github - see https://github.com/freenas
Brought to you by:
cochard,
mattolander
#!/bin/sh # # Copyright (c) 2000-2004 The FreeBSD Project #All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # @(#)rc 5.27 (Berkeley) 6/5/91 # $FreeBSD: src/etc/rc,v 1.340.8.1 2009/04/15 03:14:26 kensmith Exp $ # # System startup script run by init on autoboot # or after single-user. # Output and error are redirected to console by init, # and the console is the controlling terminal. # Note that almost all of the user-configurable behavior is no longer in # this file, but rather in /etc/defaults/rc.conf. Please check that file # first before contemplating any changes here. If you do need to change # this file for some reason, we would like to know about it. stty status '^T' # Set shell to ignore SIGINT (2), but not children; # shell catches SIGQUIT (3) and returns to single user. # trap : 2 trap "echo 'Boot interrupted'; exit 1" 3 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin export HOME PATH # Get operating platform PLATFORM=`cat /etc/platform` case ${PLATFORM} in *-full) # Do a fsck on root file system. /etc/rc.d/fsck root; # If running from full, mount the root (/) in read-write. /sbin/mount -u -o rw /; ;; *) # If running from liveCD or embedded, mount the root (ramdisk) in read-write. /sbin/mount -u -o rw /dev/md0 /; ;; esac # Create required directories in /var for dir in /var/run /var/log /var/etc /var/etc/ssh /var/etc/ssl/private /var/etc/private /var/etc/iscsi /var/etc/netatalk /var/db /var/mount /var/empty /var/cron /var/cron/tabs /var/spool /var/spool/lock; do [ ! -d "${dir}" ] && mkdir -p ${dir} done if [ ! -d /var/tmp ]; then mkdir -p /var/tmp chmod 1777 /var/tmp fi # Configure the shared library cache /sbin/ldconfig -elf /usr/lib /usr/local/lib /lib # Let the PHP functions know we're booting BOOTING=1 export BOOTING if [ "$1" = autoboot ]; then autoboot=yes _boot="faststart" rc_fast=yes # run_rc_command(): do fast booting else autoboot=no _boot="start" fi # Run these after determining whether we are booting diskless in order # to minimize the number of files that are needed on a diskless system, # and to make the configuration file variables available to rc itself. # . /etc/rc.subr echo "Loading configuration files." load_rc_config 'XXX' skip="-s nostart" if [ `/sbin/sysctl -n security.jail.jailed` -eq 1 ]; then skip="$skip -s nojail" if [ "$early_late_divider" = "FILESYSTEMS" ]; then early_late_divider=NETWORKING fi fi # Do a first pass to get everything up to $early_late_divider so that # we can do a second pass that includes $local_startup directories # files=`rcorder ${skip} /etc/rc.d/* 2>/dev/null` for _rc_elem in ${files}; do run_rc_script ${_rc_elem} ${_boot} case "$_rc_elem" in */${early_late_divider}) break ;; esac done unset files local_rc # Now that disks are mounted, for each dir in $local_startup # search for init scripts that use the new rc.d semantics. # case ${local_startup} in [Nn][Oo] | '') ;; *) find_local_scripts_new ;; esac files=`rcorder ${skip} /etc/rc.d/* ${local_rc} 2>/dev/null` _skip_early=1 for _rc_elem in ${files}; do case "$_skip_early" in 1) case "$_rc_elem" in */${early_late_divider}) _skip_early=0 ;; esac continue ;; esac run_rc_script ${_rc_elem} ${_boot} done # Let the PHP functions know we've finished booting BOOTING=0 echo '' date exit 0