aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/sysvinit/sysvinit/rcS
blob: 15b90f79c57610b16d939da79654c3a965b9fc38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/sh
#
# rcS		Call all S??* scripts in /etc/rcS.d in
#		numerical/alphabetical order.
#
# Version:	@(#)/etc/init.d/rcS  2.76  19-Apr-1999  miquels@cistron.nl
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#	Make sure proc is mounted
#
[ -d "/proc/1" ] || mount proc /proc -t proc

#	Make sure sys is mounted
[ -d "/sys/kernel" ] || mount sysfs /sys -t sysfs

#
#	See if system needs to be setup. This is ONLY meant to
#	be used for the initial setup after a fresh installation!
#
if [ -x /sbin/unconfigured.sh ]
then
  /sbin/unconfigured.sh
fi

#
#	Source defaults.
#
. /etc/default/rcS

#
#	Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP

#
#       Do we have /proc/progress and set VERBOSE to "no" ?
#       If so, calculate the number of scripts and the incremental step
#
if [ "$VERBOSE" = no ]; then
    if [ -e /proc/progress ]; then
        set `ls -1 /etc/rc$runlevel.d/S* | wc`
        numscripts=$1
        PROGRESS_incstep=`expr 90 / $1`
        PROGRESS_value=10
        PROGRESS=yes
        export PROGRESS_value PROGRESS_incstep
    fi
fi
export VERBOSE PROGRESS

#
#	Call all parts in order.
#
for i in /etc/rcS.d/S??*
do
	# Ignore dangling symlinks for now.
	[ ! -f "$i" ] && continue

	# Handle verbosity
	[ "$VERBOSE" = very ] && echo "INIT: Running $i..."
	if [ "$PROGRESS" = yes ]; then
		export PROGRESS_value=`expr $PROGRESS_value + $PROGRESS_incstep`
		echo "$PROGRESS_value Starting $i..." >/proc/progress
	fi

	case "$i" in
		*.sh)
			# Source shell script for speed.
			(
				trap - INT QUIT TSTP
				set start
				. $i
			)
			;;
		*)
			# No sh extension, so fork subprocess.
			$i start
			;;
	esac

        #
        # Report status based on result code
        #
        result=$?
        if [ "$PROGRESS" = yes ]; then
                if [ "$result" = 0 ]; then
                    echo "=s" >/proc/progress
                else
                    echo "=f" >/proc/progress
                fi
        fi
done

#
#	For compatibility, run the files in /etc/rc.boot too.
#
[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

#
#	Finish setup if needed. The comment above about
#	/sbin/unconfigured.sh applies here as well!
#
if [ -x /sbin/setup.sh ]
then
  /sbin/setup.sh
fi