diff options
| author | Richard Purdie <richard@openedhand.com> | 2006-09-28 14:21:06 +0000 |
|---|---|---|
| committer | Richard Purdie <richard@openedhand.com> | 2006-09-28 14:21:06 +0000 |
| commit | eb83f4bb4e05b8a8c12340be1e1d03d136cb6811 (patch) | |
| tree | e74897973e410d3648ef5fe8eb433048104e007d | |
| parent | b462c8bee52fafc1eade2d913d3a50dc301a3fdf (diff) | |
| download | poky-eb83f4bb4e05b8a8c12340be1e1d03d136cb6811.tar.gz | |
sysvinit: Add psplash support, remove elpp support, convert rcS to use rc, speedup execution of sh scripts
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@771 311d38ba-8fff-0310-9ca6-ca027cbcb966
| -rwxr-xr-x | meta/packages/sysvinit/sysvinit/rc | 73 | ||||
| -rwxr-xr-x | meta/packages/sysvinit/sysvinit/rcS | 56 | ||||
| -rw-r--r-- | meta/packages/sysvinit/sysvinit_2.86.bb | 2 |
3 files changed, 73 insertions, 58 deletions
diff --git a/meta/packages/sysvinit/sysvinit/rc b/meta/packages/sysvinit/sysvinit/rc index fdb0fce887..a355ea05cc 100755 --- a/meta/packages/sysvinit/sysvinit/rc +++ b/meta/packages/sysvinit/sysvinit/rc | |||
| @@ -18,18 +18,37 @@ | |||
| 18 | . /etc/default/rcS | 18 | . /etc/default/rcS |
| 19 | export VERBOSE | 19 | export VERBOSE |
| 20 | 20 | ||
| 21 | startup_progress() { | ||
| 22 | step=$(($step + $step_change)) | ||
| 23 | progress=$(($step * $progress_size / $num_steps + $first_step)) | ||
| 24 | if type psplash-write >/dev/null 2>&1; then | ||
| 25 | TMPDIR=/mnt/.psplash psplash-write "PROGRESS $progress" || true | ||
| 26 | fi | ||
| 27 | } | ||
| 28 | |||
| 29 | |||
| 21 | # | 30 | # |
| 22 | # Start script or program. | 31 | # Start script or program. |
| 23 | # | 32 | # |
| 24 | startup() { | 33 | startup() { |
| 34 | # Handle verbosity | ||
| 35 | [ "$VERBOSE" = very ] && echo "INIT: Running $@..." | ||
| 36 | |||
| 25 | case "$1" in | 37 | case "$1" in |
| 26 | *.sh) | 38 | *.sh) |
| 27 | sh "$@" | 39 | # Source shell script for speed. |
| 40 | ( | ||
| 41 | trap - INT QUIT TSTP | ||
| 42 | scriptname=$1 | ||
| 43 | shift | ||
| 44 | . $scriptname | ||
| 45 | ) | ||
| 28 | ;; | 46 | ;; |
| 29 | *) | 47 | *) |
| 30 | "$@" | 48 | "$@" |
| 31 | ;; | 49 | ;; |
| 32 | esac | 50 | esac |
| 51 | startup_progress | ||
| 33 | } | 52 | } |
| 34 | 53 | ||
| 35 | # Ignore CTRL-C only in this shell, so we can interrupt subprocesses. | 54 | # Ignore CTRL-C only in this shell, so we can interrupt subprocesses. |
| @@ -56,6 +75,37 @@ startup() { | |||
| 56 | # Is there an rc directory for this new runlevel? | 75 | # Is there an rc directory for this new runlevel? |
| 57 | if [ -d /etc/rc$runlevel.d ] | 76 | if [ -d /etc/rc$runlevel.d ] |
| 58 | then | 77 | then |
| 78 | # Find out where in the progress bar the initramfs got to. | ||
| 79 | PROGRESS_STATE=0 | ||
| 80 | #if [ -f /dev/.initramfs/progress_state ]; then | ||
| 81 | # . /dev/.initramfs/progress_state | ||
| 82 | #fi | ||
| 83 | |||
| 84 | # Split the remaining portion of the progress bar into thirds | ||
| 85 | progress_size=$(((100 - $PROGRESS_STATE) / 3)) | ||
| 86 | |||
| 87 | case "$runlevel" in | ||
| 88 | 0|6) | ||
| 89 | # Count down from 0 to -100 and use the entire bar | ||
| 90 | first_step=0 | ||
| 91 | progress_size=100 | ||
| 92 | step_change=-1 | ||
| 93 | ;; | ||
| 94 | S) | ||
| 95 | # Begin where the initramfs left off and use 2/3 | ||
| 96 | # of the remaining space | ||
| 97 | first_step=$PROGRESS_STATE | ||
| 98 | progress_size=$(($progress_size * 2)) | ||
| 99 | step_change=1 | ||
| 100 | ;; | ||
| 101 | *) | ||
| 102 | # Begin where rcS left off and use the final 1/3 of | ||
| 103 | # the space (by leaving progress_size unchanged) | ||
| 104 | first_step=$(($progress_size * 2 + $PROGRESS_STATE)) | ||
| 105 | step_change=1 | ||
| 106 | ;; | ||
| 107 | esac | ||
| 108 | |||
| 59 | # First, run the KILL scripts. | 109 | # First, run the KILL scripts. |
| 60 | if [ $previous != N ] | 110 | if [ $previous != N ] |
| 61 | then | 111 | then |
| @@ -68,6 +118,19 @@ startup() { | |||
| 68 | startup $i stop | 118 | startup $i stop |
| 69 | done | 119 | done |
| 70 | fi | 120 | fi |
| 121 | |||
| 122 | num_steps=0 | ||
| 123 | for s in /etc/rc$runlevel.d/[SK]*; do | ||
| 124 | case "${s##/etc/rc$runlevel.d/S??}" in | ||
| 125 | gdm|xdm|kdm|reboot|halt) | ||
| 126 | break | ||
| 127 | ;; | ||
| 128 | esac | ||
| 129 | num_steps=$(($num_steps + 1)) | ||
| 130 | done | ||
| 131 | |||
| 132 | step=0 | ||
| 133 | |||
| 71 | # Now run the START scripts for this runlevel. | 134 | # Now run the START scripts for this runlevel. |
| 72 | for i in /etc/rc$runlevel.d/S* | 135 | for i in /etc/rc$runlevel.d/S* |
| 73 | do | 136 | do |
| @@ -99,4 +162,10 @@ startup() { | |||
| 99 | esac | 162 | esac |
| 100 | done | 163 | done |
| 101 | fi | 164 | fi |
| 102 | # eof /etc/init.d/rc | 165 | |
| 166 | if [ "x$runlevel" != "xS" ]; then | ||
| 167 | if type psplash-write >/dev/null 2>&1; then | ||
| 168 | TMPDIR=/mnt/.psplash psplash-write "QUIT" || true | ||
| 169 | umount /mnt/.psplash | ||
| 170 | fi | ||
| 171 | fi | ||
diff --git a/meta/packages/sysvinit/sysvinit/rcS b/meta/packages/sysvinit/sysvinit/rcS index e7a7e617d0..90af4149e4 100755 --- a/meta/packages/sysvinit/sysvinit/rcS +++ b/meta/packages/sysvinit/sysvinit/rcS | |||
| @@ -36,63 +36,9 @@ fi | |||
| 36 | trap ":" INT QUIT TSTP | 36 | trap ":" INT QUIT TSTP |
| 37 | 37 | ||
| 38 | # | 38 | # |
| 39 | # Do we have /proc/progress and set VERBOSE to "no" ? | ||
| 40 | # If so, calculate the number of scripts and the incremental step | ||
| 41 | # | ||
| 42 | if [ "$VERBOSE" = no ]; then | ||
| 43 | if [ -e /proc/progress ]; then | ||
| 44 | set `ls -1 /etc/rc$runlevel.d/S* | wc` | ||
| 45 | numscripts=$1 | ||
| 46 | PROGRESS_incstep=`expr 90 / $1` | ||
| 47 | PROGRESS_value=10 | ||
| 48 | PROGRESS=yes | ||
| 49 | export PROGRESS_value PROGRESS_incstep | ||
| 50 | fi | ||
| 51 | fi | ||
| 52 | export VERBOSE PROGRESS | ||
| 53 | |||
| 54 | # | ||
| 55 | # Call all parts in order. | 39 | # Call all parts in order. |
| 56 | # | 40 | # |
| 57 | for i in /etc/rcS.d/S??* | 41 | exec /etc/init.d/rc S |
| 58 | do | ||
| 59 | # Ignore dangling symlinks for now. | ||
| 60 | [ ! -f "$i" ] && continue | ||
| 61 | |||
| 62 | # Handle verbosity | ||
| 63 | [ "$VERBOSE" = very ] && echo "INIT: Running $i..." | ||
| 64 | if [ "$PROGRESS" = yes ]; then | ||
| 65 | export PROGRESS_value=`expr $PROGRESS_value + $PROGRESS_incstep` | ||
| 66 | echo "$PROGRESS_value Starting $i..." >/proc/progress | ||
| 67 | fi | ||
| 68 | |||
| 69 | case "$i" in | ||
| 70 | *.sh) | ||
| 71 | # Source shell script for speed. | ||
| 72 | ( | ||
| 73 | trap - INT QUIT TSTP | ||
| 74 | set start | ||
| 75 | . $i | ||
| 76 | ) | ||
| 77 | ;; | ||
| 78 | *) | ||
| 79 | # No sh extension, so fork subprocess. | ||
| 80 | $i start | ||
| 81 | ;; | ||
| 82 | esac | ||
| 83 | |||
| 84 | # | ||
| 85 | # Report status based on result code | ||
| 86 | # | ||
| 87 | result=$? | ||
| 88 | if [ "$PROGRESS" = yes ]; then | ||
| 89 | if [ "$result" = 0 ]; then | ||
| 90 | echo "=s" >/proc/progress | ||
| 91 | else | ||
| 92 | echo "=f" >/proc/progress | ||
| 93 | fi | ||
| 94 | fi | ||
| 95 | done | ||
| 96 | 42 | ||
| 97 | # | 43 | # |
| 98 | # For compatibility, run the files in /etc/rc.boot too. | 44 | # For compatibility, run the files in /etc/rc.boot too. |
diff --git a/meta/packages/sysvinit/sysvinit_2.86.bb b/meta/packages/sysvinit/sysvinit_2.86.bb index 72ce082da6..4ea1e4d284 100644 --- a/meta/packages/sysvinit/sysvinit_2.86.bb +++ b/meta/packages/sysvinit/sysvinit_2.86.bb | |||
| @@ -2,7 +2,7 @@ DESCRIPTION = "System-V like init." | |||
| 2 | SECTION = "base" | 2 | SECTION = "base" |
| 3 | LICENSE = "GPL" | 3 | LICENSE = "GPL" |
| 4 | HOMEPAGE = "http://freshmeat.net/projects/sysvinit/" | 4 | HOMEPAGE = "http://freshmeat.net/projects/sysvinit/" |
| 5 | PR = "r24" | 5 | PR = "r26" |
| 6 | 6 | ||
| 7 | # USE_VT and SERIAL_CONSOLE are generally defined by the MACHINE .conf. | 7 | # USE_VT and SERIAL_CONSOLE are generally defined by the MACHINE .conf. |
| 8 | # Set PACKAGE_ARCH appropriately. | 8 | # Set PACKAGE_ARCH appropriately. |
