summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Wilcox <andy@protium.com>2006-12-07 19:43:13 +0000
committerAndrew Wilcox <andy@protium.com>2006-12-07 19:43:13 +0000
commitf68d2c99fa7ca759e2a1e76f856aa59a71bae59f (patch)
tree3bd009b557adc8340b0c599a221dd6a260f0b5ce
parent0165cbef046ef6a02bf096806f2e72d3785358a5 (diff)
initscripts/initscripts-1.0: add openprotium on storcenter specific scripts and bb file.
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/.mtn2git_empty0
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/devfs.sh5
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/devices70
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/devices.patch52
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/domainname.sh5
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/flashclean60
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/halt27
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/reboot12
-rw-r--r--packages/initscripts/initscripts-openprotium_1.0.bb178
9 files changed, 409 insertions, 0 deletions
diff --git a/packages/initscripts/initscripts-1.0/openprotium/.mtn2git_empty b/packages/initscripts/initscripts-1.0/openprotium/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/.mtn2git_empty
diff --git a/packages/initscripts/initscripts-1.0/openprotium/devfs.sh b/packages/initscripts/initscripts-1.0/openprotium/devfs.sh
new file mode 100644
index 0000000000..5765ca648c
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/devfs.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+mount -t devfs none /dev
+
+
diff --git a/packages/initscripts/initscripts-1.0/openprotium/devices b/packages/initscripts/initscripts-1.0/openprotium/devices
new file mode 100755
index 0000000000..f83ea63598
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/devices
@@ -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/openprotium/devices.patch b/packages/initscripts/initscripts-1.0/openprotium/devices.patch
new file mode 100644
index 0000000000..2583b62f48
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/devices.patch
@@ -0,0 +1,52 @@
+#
+# Patch to allow /dev to reside permanently in the file
+# system.
+#
+--- old/devices 2005-05-28 21:51:39.012078699 -0700
++++ new/devices 2005-06-12 00:16:29.222686303 -0700
+@@ -6,7 +6,7 @@
+ . /etc/default/rcS
+
+ # exit without doing anything if udev is active
+-if test -e /dev/.udev -o -e /dev/.udevdb; then
++if test -e /dev/.udev -o -e /dev/.udevdb -o -e /dev/.permanent; then
+ exit 0
+ fi
+
+@@ -37,12 +37,20 @@
+ mknod /dev/ppp c 108 0
+ 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
++ if test -e /dev/.noram
++ then
++ # There should be no files, any files will damage the
++ # makedevs script below.
++ rm $(find /dev -type f -print)
++ :>/dev/.noram
+ else
+- if test "$VERBOSE" != "no"; then echo "done"; fi
++ 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
+ fi
+ if test "$VERBOSE" != "no"; then echo -n "Populating /dev: "; fi
+ cd /
+@@ -60,6 +68,10 @@
+ if test "$VERBOSE" != "no"; then echo "failed"; fi
+ else
+ if test "$VERBOSE" != "no"; then echo "done"; fi
++ if test -e /dev/.noram
++ then
++ :>/dev/.permanent
++ fi
+ fi
+ fi
+
diff --git a/packages/initscripts/initscripts-1.0/openprotium/domainname.sh b/packages/initscripts/initscripts-1.0/openprotium/domainname.sh
new file mode 100644
index 0000000000..7113467d8c
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/domainname.sh
@@ -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/openprotium/flashclean b/packages/initscripts/initscripts-1.0/openprotium/flashclean
new file mode 100755
index 0000000000..d9a0e1b592
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/flashclean
@@ -0,0 +1,60 @@
+#! /bin/sh
+#
+# This is an init script for openprotium for storcenter
+#
+# This script cleansup after a successful uboot based reflash.
+# A uboot reflash is done by changing the bootloader boot command
+# to tftp a flash image and flash the firmware. However the boot command
+# is never reset back to a regular boot. This way if the flash did
+# not work the next power cycle will cause another reflash. A nice
+# development recovery feature. So this boot script is the mechanism
+# to reset the uboot boot command. Once booted and access it validated
+# this script will issue command to reset the boot command.
+#
+# This command only has a start so stop is not necessary and should
+# as late in the boot process as possible to ensure a successful reboot
+#
+# Copy it to /etc/init.d/flashclean and type
+# update-rc.d flashclean start 99 5
+#
+BOOTCMD="bootm FF800000"
+
+dmesg | grep StorCenter >/dev/null 2>&1
+if [ $? -ne 0 ]; then
+ exit 0
+fi
+
+printenv=/sbin/fw_printenv
+setenv=/sbin/fw_setenv
+test -x "$printenv" -a -x "$setenv" || exit 0
+
+case "$1" in
+ start)
+ # Check to see if any work needs to be done
+ # Need to quote the right hand side, hence the ugly awk.
+ eval `$printenv bootcmd | awk -F= '{printf("%s=\"%s\"", $1, $2)}'`
+ if [ "$bootcmd" = "$BOOTCMD" ]; then
+ exit 0
+ fi
+
+ echo -n "Restoring u-Boot bootcmd"
+ $setenv bootcmd $BOOTCMD > /dev/null 2>&1
+ eval `$printenv bootcmd | awk -F= '{printf("%s=\"%s\"", $1, $2)}'`
+ if [ "$bootcmd" != "$BOOTCMD" ]; then
+ echo " FAILED."
+ exit 1
+ fi
+ echo "."
+ ;;
+ stop)
+ ;;
+ reload|force-reload)
+ ;;
+ restart)
+ ;;
+ *)
+ echo "Usage: /etc/init.d/flashclean {start|stop|reload|restart|force-reload}"
+ exit 1
+esac
+
+exit 0
diff --git a/packages/initscripts/initscripts-1.0/openprotium/halt b/packages/initscripts/initscripts-1.0/openprotium/halt
new file mode 100755
index 0000000000..f22d892d46
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/halt
@@ -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/openprotium/reboot b/packages/initscripts/initscripts-1.0/openprotium/reboot
new file mode 100755
index 0000000000..05a82be4c0
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/reboot
@@ -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-openprotium_1.0.bb b/packages/initscripts/initscripts-openprotium_1.0.bb
new file mode 100644
index 0000000000..4266211dba
--- /dev/null
+++ b/packages/initscripts/initscripts-openprotium_1.0.bb
@@ -0,0 +1,178 @@
+#
+# OpenProtium stuff sorta specific for the storcenter.
+#
+# 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://openprotium/devfs.sh"
+SRC_URI += "file://openprotium/domainname.sh"
+SRC_URI += "file://openprotium/devices"
+SRC_URI += "file://openprotium/halt"
+SRC_URI += "file://openprotium/reboot"
+SRC_URI += "file://openprotium/flashclean"
+SRC_URI += "file://openprotium/devices.patch;patch=1"
+
+# 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}/openprotium/domainname.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/devfs.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/halt ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/reboot ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/devices ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/flashclean ${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-openprotium: unexpected link $d"
+ status=1
+ done
+ test $status -eq 0 ||
+ oefatal "initscripts-openprotium: 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 .
+ update-rc.d -r ${D} flashclean start 99 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 .
+}