turbostation: initscripts
authorOyvind Repvik <nail@nslu2-linux.org>
Wed, 7 Mar 2007 12:46:19 +0000 (12:46 +0000)
committerOyvind Repvik <nail@nslu2-linux.org>
Wed, 7 Mar 2007 12:46:19 +0000 (12:46 +0000)
packages/initscripts/initscripts-1.0/openturbostation/.mtn2git_empty [new file with mode: 0644]
packages/initscripts/initscripts-1.0/openturbostation/checkroot.sh [new file with mode: 0755]
packages/initscripts/initscripts-1.0/openturbostation/devices [new file with mode: 0755]
packages/initscripts/initscripts-1.0/openturbostation/domainname.sh [new file with mode: 0644]
packages/initscripts/initscripts-1.0/openturbostation/halt [new file with mode: 0755]
packages/initscripts/initscripts-1.0/openturbostation/reboot [new file with mode: 0755]
packages/initscripts/initscripts-openturbostation_1.0.bb [new file with mode: 0644]

diff --git a/packages/initscripts/initscripts-1.0/openturbostation/.mtn2git_empty b/packages/initscripts/initscripts-1.0/openturbostation/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/initscripts/initscripts-1.0/openturbostation/checkroot.sh b/packages/initscripts/initscripts-1.0/openturbostation/checkroot.sh
new file mode 100755 (executable)
index 0000000..c69a773
--- /dev/null
@@ -0,0 +1,212 @@
+#
+# checkroot.sh Check to root filesystem.
+#
+# Version:     @(#)checkroot.sh  2.84  25-Jan-2002  miquels@cistron.nl
+#
+
+. /etc/default/rcS
+
+#
+# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
+# from this script *before anything else* with a timeout, like SCO does.
+#
+test "$SULOGIN" = yes && sulogin -t 30 $CONSOLE
+
+#
+# Ensure that bdflush (update) is running before any major I/O is
+# performed (the following fsck is a good example of such activity :).
+#
+test -x /sbin/update && update
+
+#
+# Read /etc/fstab.
+#
+exec 9>&0 </etc/fstab
+rootmode=rw
+rootopts=rw
+test "$ENABLE_ROOTFS_FSCK" = yes && rootcheck="yes" || rootcheck="no"
+swap_on_md=no
+devfs=
+while read fs mnt type opts dump pass junk
+do
+       case "$fs" in
+               ""|\#*)
+                       continue;
+                       ;;
+               /dev/md*)
+                       # Swap on md device.
+                       test "$type" = swap && swap_on_md=yes
+                       ;;
+               /dev/*)
+                       ;;
+               *)
+                       # Might be a swapfile.
+                       test "$type" = swap && swap_on_md=yes
+                       ;;
+       esac
+       
+       test "$type" = devfs && devfs="$fs"
+
+       # Currently we do not care about the other entries
+       if test "$mnt" = "/"
+       then
+               #echo "[$fs] [$mnt] [$type] [$opts] [$dump] [$pass] [$junk]"
+
+               rootopts="$opts"                
+               roottype="$type"
+
+               #The "spinner" is broken on busybox sh  
+               TERM=dumb
+                       
+               test "$pass" = 0 -o "$pass" = "" && rootcheck=no
+               
+               # Enable fsck for ext2 and ext3 rootfs, disable for everything else                             
+               case "$type" in
+               ext2|ext3)      rootcheck=yes;;
+               *)              rootcheck=no;;
+               esac
+               
+               if test "$rootcheck" = yes
+               then
+                       if ! test -x "/sbin/fsck.${roottype}"
+                       then
+                               echo -e "\n * * * WARNING: /sbin/fsck.${roottype} is missing! * * *\n"
+                               rootcheck=no
+                       fi
+               fi
+               
+               case "$opts" in
+                       ro|ro,*|*,ro|*,ro,*)
+                               rootmode=ro
+                               ;;
+               esac
+       fi
+done
+exec 0>&9 9>&-
+
+#
+# Activate the swap device(s) in /etc/fstab. This needs to be done
+# before fsck, since fsck can be quite memory-hungry.
+#
+doswap=no
+test -d /proc/1 || mount -n /proc
+case "`uname -r`" in
+       2.[0123].*)
+               if test $swap_on_md = yes && grep -qs resync /proc/mdstat
+               then
+                       test "$VERBOSE" != no && echo "Not activating swap - RAID array resyncing"
+               else
+                       doswap=yes
+               fi
+               ;;
+       *)
+               doswap=yes
+               ;;
+esac
+if test $doswap = yes
+then
+       test "$VERBOSE" != no && echo "Activating swap"
+       swapon -a 2> /dev/null
+fi
+
+#
+# Check the root filesystem.
+#
+if test -f /fastboot || test $rootcheck = no
+then
+  test $rootcheck = yes && echo "Fast boot, no filesystem check"
+else
+  #
+  # Ensure that root is quiescent and read-only before fsck'ing.
+  #
+  mount -n -o remount,ro /
+  if test $? = 0
+  then
+    if test -f /forcefsck
+    then
+       force="-f"
+    else
+       force=""
+    fi
+    if test "$FSCKFIX" = yes
+    then
+       fix="-y"
+    else
+       fix="-a"
+    fi
+    spinner="-C"
+    case "$TERM" in
+        dumb|network|unknown|"") spinner="" ;;
+    esac
+    test `uname -m` = s390 && spinner="" # This should go away
+    test "$VERBOSE" != no && echo "Checking root filesystem..."
+    fsck $spinner $force $fix /
+    #
+    # If there was a failure, drop into single-user mode.
+    #
+    # NOTE: "failure" is defined as exiting with a return code of
+    # 2 or larger.  A return code of 1 indicates that filesystem
+    # errors were corrected but that the boot may proceed.
+    #
+    
+    echo "RETURNCODE: [$RTC]"
+    
+    if test "$RTC" -gt 3
+    then
+    
+      # Since this script is run very early in the boot-process, it should be safe to assume that the
+      # output is printed to VT1. However, some distributions use a bootsplash to hide the "ugly" boot
+      # messages and having the bootsplash "hang" due to a waiting fsck prompt is less than ideal
+      chvt 1
+    
+      # Surprise! Re-directing from a HERE document (as in
+      # "cat << EOF") won't work, because the root is read-only.
+      echo
+      echo "fsck failed.  Please repair manually and reboot. " 
+      echo "Please note that the root filesystem is currently "
+      echo "mounted read-only.  To remount it read-write:"
+      echo
+      echo "   # mount -n -o remount,rw /"
+      echo
+      echo "CONTROL-D will exit from this shell"
+      echo "and REBOOT the system."
+      echo
+      # Start a single user shell on the console
+      /sbin/sulogin $CONSOLE
+      reboot -f
+    fi
+  else
+    echo "*** ERROR!  Cannot fsck root fs because it is not mounted read-only!"
+    echo
+  fi
+fi
+
+devrootfound=$(grep "/dev/root" /proc/mounts | \
+        awk '{if ($4 = /rw/) print "found";}' )                                 
+
+if [ -n "$devrootfound" -a "$devrootfound" = "found" ]; then
+       echo "Read/write /dev/root found."            
+       exit 0                                                   
+fi
+
+if mount -vf -o remount / 2> /dev/null | \
+       awk '{if ($6 ~ /rw/) exit 0; else exit 1; }' && \
+       ! touch -c / 2> /dev/null 
+       then
+               echo " Remounting root filesystem read/write"
+               mount -n -o remount,$rootmode /
+fi
+
+if test "$rootmode" = rw
+then
+       if test ! -L /etc/mtab
+       then
+               rm -f /etc/mtab~ /etc/nologin
+               : > /etc/mtab
+       fi
+       mount -f -o remount /
+       mount -f /proc
+       test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
+fi
+
+: exit 0
diff --git a/packages/initscripts/initscripts-1.0/openturbostation/devices b/packages/initscripts/initscripts-1.0/openturbostation/devices
new file mode 100755 (executable)
index 0000000..f83ea63
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# Devfs handling script.  Since we arent running devfsd due to various reasons
+# which I will not lay out here, we need to create some links for compatibility.
+
+. /etc/default/rcS
+
+# exit without doing anything if udev is active
+if test -e /dev/.udev -o -e /dev/.udevdb; then
+       exit 0
+fi
+
+if test -e /dev/.devfsd
+then
+       if test "$VERBOSE" != "no"; then echo -n "Setting up device links for devfs: "; fi
+       [ -e /dev/.linksmade ] && exit 0
+
+       ln -s /dev/tts/0 /dev/ttySA0
+       ln -s /dev/tts/1 /dev/ttySA1
+
+       ln -s /dev/sound/dsp /dev/dsp
+       ln -s /dev/sound/mixer /dev/mixer
+
+       ln -s /dev/misc/rtc /dev/rtc
+
+       #
+       # some friendly disk links
+       #
+       ln -s /dev/discs/disc0/disc /dev/hda
+       ln -s /dev/discs/disc1/disc /dev/hdb
+       for i in 1 2 3 4; do
+               ln -s /dev/discs/disc0/part$i /dev/hda$i
+               ln -s /dev/discs/disc1/part$i /dev/hdb$i
+       done
+
+       ## need this so that ppp will autoload the ppp modules
+       mknod /dev/ppp c 108 0
+       ln -s /dev/zero /dev/.linksmade
+
+       if test "$VERBOSE" != "no"; then echo "done"; fi
+else
+       if test "$VERBOSE" != "no"; then echo -n "Mounting /dev ramdisk: "; fi
+       mount -t ramfs ramfs /dev || mount -t tmpfs ramfs /dev
+       if test $? -ne 0; then
+               if test "$VERBOSE" != "no"; then echo "failed"; fi
+       else
+               if test "$VERBOSE" != "no"; then echo "done"; fi
+       fi
+       if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+       cd /
+       mkdir -p dev/input
+       mkdir -p dev/msys
+       mkdir -p dev/pts
+       mkdir -p dev/vc
+       mkdir -p dev/snd
+       mkdir -p dev/tts
+       for i in 0 1 2 3 4 5 6 7 8 9; do
+               ln -s /dev/tty$i /dev/vc/$i
+       done
+       ln -sf /proc/self/fd /dev/fd
+       ln -sf /proc/kcore /dev/core
+       /sbin/makedevs -r / -D /etc/device_table
+       if test $? -ne 0; then
+               if test "$VERBOSE" != "no"; then echo "failed"; fi
+       else
+               if test "$VERBOSE" != "no"; then echo "done"; fi
+       fi
+fi
+
+exit 0
diff --git a/packages/initscripts/initscripts-1.0/openturbostation/domainname.sh b/packages/initscripts/initscripts-1.0/openturbostation/domainname.sh
new file mode 100644 (file)
index 0000000..7113467
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# domainname.sh        Set the domainname.
+#
+test -r /etc/defaultdomain &&
+       cat /etc/defaultdomain >/proc/sys/kernel/domainname
diff --git a/packages/initscripts/initscripts-1.0/openturbostation/halt b/packages/initscripts/initscripts-1.0/openturbostation/halt
new file mode 100755 (executable)
index 0000000..f22d892
--- /dev/null
@@ -0,0 +1,27 @@
+#! /bin/sh
+#
+# halt         Execute the halt command.
+#
+# Version:      @(#)halt  2.84-2  07-Jan-2002  miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# See if we need to cut the power.
+if test -x /etc/init.d/ups-monitor
+then
+       /etc/init.d/ups-monitor poweroff
+fi
+
+# Don't shut down drives if we're using RAID.
+hddown="-h"
+if grep -qs '^md.*active' /proc/mdstat
+then
+       hddown=""
+fi
+
+echo "Powering down..."
+scc -p off
+halt -d -f -i -p $hddown
+
+: exit 0
diff --git a/packages/initscripts/initscripts-1.0/openturbostation/reboot b/packages/initscripts/initscripts-1.0/openturbostation/reboot
new file mode 100755 (executable)
index 0000000..05a82be
--- /dev/null
@@ -0,0 +1,12 @@
+#! /bin/sh
+#
+# reboot       Execute the reboot command.
+#
+# Version:      @(#)reboot  2.75  22-Jun-1998  miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo -n "Rebooting... "
+scc -p restart
+reboot -d -f -i
diff --git a/packages/initscripts/initscripts-openturbostation_1.0.bb b/packages/initscripts/initscripts-openturbostation_1.0.bb
new file mode 100644 (file)
index 0000000..3fc98fa
--- /dev/null
@@ -0,0 +1,175 @@
+#
+# OpenTurbostation stuff sorta specific for the turbostation
+#
+# This is, in effect, an extended patch to fix various
+# problems in the initscripts on SlugOS.  The problems
+# mostly come down to the order the scripts are executed
+# in.
+include initscripts_${PV}.bb
+
+RCONFLICTS = "initscripts"
+# All other standard definitions inherited from initscripts
+# Except the PR which is hacked here.  The format used is
+# a suffix
+PR := "${PR}.11"
+
+FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
+
+PACKAGES = "${PN}"
+
+SRC_URI += "file://openturbostation/domainname.sh"
+SRC_URI += "file://openturbostation/devices"
+SRC_URI += "file://openturbostation/halt"
+SRC_URI += "file://openturbostation/reboot"
+SRC_URI += "file://openturbostation/checkroot.sh"
+
+# Without this it is not possible to patch checkroot.sh
+S = "${WORKDIR}"
+
+do_install_append() {
+       # the image build command now installs this for slugos
+       # except that mine doesn't.   we don't need it, but we turnup
+       # expects it to at least exist
+       rm      ${D}${sysconfdir}/device_table
+       touch   ${D}${sysconfdir}/device_table
+
+       # openprotium specific scripts
+       # install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/openturbostation/domainname.sh ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/openturbostation/devfs.sh ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/openturbostation/halt     ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/openturbostation/reboot   ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/openturbostation/devices  ${D}${sysconfdir}/init.d
+       install -m 0755 ${WORKDIR}/openturbostation/checkroot.sh  ${D}${sysconfdir}/init.d
+
+       # Remove the do install links (this detects a change to the
+       # initscripts .bb file - it will cause a build failure here.)
+       # This is a copy of the ln -sf lines from the initscripts
+       # do_install.
+       rm      ${D}${sysconfdir}/rc2.d/S99rmnologin
+       rm      ${D}${sysconfdir}/rc3.d/S99rmnologin
+       rm      ${D}${sysconfdir}/rc4.d/S99rmnologin
+       rm      ${D}${sysconfdir}/rc5.d/S99rmnologin
+       rm      ${D}${sysconfdir}/rc6.d/S20sendsigs
+#      rm      ${D}${sysconfdir}/rc6.d/S30urandom
+       rm      ${D}${sysconfdir}/rc6.d/S31umountnfs.sh
+       rm      ${D}${sysconfdir}/rc6.d/S40umountfs
+       rm      ${D}${sysconfdir}/rcS.d/S30ramdisk
+       rm      ${D}${sysconfdir}/rc6.d/S90reboot
+       rm      ${D}${sysconfdir}/rc0.d/S20sendsigs
+#      rm      ${D}${sysconfdir}/rc0.d/S30urandom
+       rm      ${D}${sysconfdir}/rc0.d/S31umountnfs.sh
+       rm      ${D}${sysconfdir}/rc0.d/S40umountfs
+       rm      ${D}${sysconfdir}/rc0.d/S90halt
+       rm      ${D}${sysconfdir}/rcS.d/S02banner
+       rm      ${D}${sysconfdir}/rcS.d/S10checkroot.sh
+#      rm      ${D}${sysconfdir}/rcS.d/S30checkfs.sh
+       rm      ${D}${sysconfdir}/rcS.d/S35mountall.sh
+       rm      ${D}${sysconfdir}/rcS.d/S39hostname.sh
+       rm      ${D}${sysconfdir}/rcS.d/S45mountnfs.sh
+       rm      ${D}${sysconfdir}/rcS.d/S55bootmisc.sh
+#      rm      ${D}${sysconfdir}/rcS.d/S55urandom
+       rm      ${D}${sysconfdir}/rcS.d/S99finish
+       rm      ${D}${sysconfdir}/rcS.d/S05devices
+       # udev will run at S04 if installed
+       rm      ${D}${sysconfdir}/rcS.d/S03sysfs
+       rm      ${D}${sysconfdir}/rcS.d/S38devpts.sh
+       rm -f   ${D}${sysconfdir}/rcS.d/S06alignment
+       rm      ${D}${sysconfdir}/rcS.d/S37populate-volatile.sh
+       rm      ${D}${sysconfdir}/rc0.d/S25save-rtc.sh
+       rm      ${D}${sysconfdir}/rc6.d/S25save-rtc.sh
+
+
+
+       # Check the result
+       find ${D}${sysconfdir}/rc?.d ! -type d -print | {
+               status=0
+               while read d
+               do
+                       oenote "initscripts-openturbostation: unexpected link $d"
+                       status=1
+               done
+               test $status -eq 0 ||
+                       oefatal "initscripts-openturbostation: new links break do_install"
+       }
+
+       # Set the run-level links
+       #
+       # Startup (S) links - UNCHANGED
+       #
+       # Keep these in order of startup - S, then 1, 2-5, 0,6
+       # according to the level in which the script starts (or stops) first.
+       update-rc.d -r ${D} banner              start  2 S .
+       update-rc.d -r ${D} sysfs.sh            start  3 S .
+       # udev runs at S 04 .
+       update-rc.d -r ${D} devices             start  5 S .
+       # update-rc.d -r ${D} alignment.sh      start  7 S .
+       # busybox hwclock.sh (slugos-init) starts here (08)
+       # slugos-init umountinitrd runs here (09)
+
+       update-rc.d -r ${D} checkroot.sh        start 10 S .
+       # slugos buffer syslog starts here (11)
+       # sysconfsetup runs at S 12
+       # modutils.sh runs at S 20
+       # checkfs.sh is currently disabled from S 30 (and won't work on SlugOS)
+       # ramdisk is not used on SlugOS, would run at S 30
+       update-rc.d -r ${D} mountall.sh         start 35 S .
+       # base-files populate-volatile.sh runs at S37
+       update-rc.d -r ${D} devpts.sh           start 38 S .
+       # slugos file syslog starts here (39)
+       update-rc.d -r ${D} populate-volatile.sh        start 37 S .
+
+       # set hostname and domainname before the network script works (by
+       # entering them at level 40), networking may reset them.
+       update-rc.d -r ${D} domainname.sh       start 40 S .
+       update-rc.d -r ${D} hostname.sh         start 40 S .
+       # network runs at S 40
+       # slugos network syslog starts here (44)
+       update-rc.d -r ${D} mountnfs.sh         start 45 S .
+
+       update-rc.d -r ${D} bootmisc.sh         start 55 S .
+       # urandom is currently disabled from S 55 (and won't work with tmpfs /var)
+
+       # ipkg-cl configure runs at S 98
+       update-rc.d -r ${D} finish              start 99 S .
+
+       #
+       # User (2-5) links - UNCHANGED
+       # rmnologin is the only thing added to user levels
+       update-rc.d -r ${D} rmnologin           start 99 2 3 4 5 .
+
+       #
+       # Shutdown (0,6) links - !!!CHANGED!!!
+       #
+       # The problem here is that netbase installs K40networking but portmap
+       # installs S32portmap.  One of these has to change!  The safe change
+       # is to make the networking stop at S40, so all network related shutdown
+       # must be in a K script or <S40.
+       #
+       # S20sendsigs is a disaster.  It needs to happen before the umounts
+       # but after the portmapper (which it would otherwise kill).
+       #
+       # urandom would stop at (S)30
+
+       # This is the special, correct, slugos umountnfs.sh (it looks in
+       # the /proc/mounts information, not /etc/fstab)
+       update-rc.d -r ${D} umountnfs.sh        start 31 0 6 .
+       update-rc.d -r ${D} save-rtc.sh         start 25 0 6 .
+       # portmap stops at 32
+       # slugos network syslog stops here (39)
+       # networking stops at 40 (nothing else does, believe me.)
+
+       # busybox hwclock.sh (slugos-init) stops here (45)
+       # slugos file syslog stops here (47)
+       # slugos buffer syslog stops here (49)
+       # udev stops here (55)
+       # Remove any errant processes
+       update-rc.d -r ${D} sendsigs            start 60 0 6 .
+
+       # This is the special, correct, slugos umountfs, it will umount
+       # any network file systems which failed to umount before.
+       update-rc.d -r ${D} umountfs            start 70 0 6 .
+
+       update-rc.d -r ${D} halt                start 90 0 .
+       update-rc.d -r ${D} reboot              start 90 6 .
+}