diff options
author | Andrew Wilcox <andy@protium.com> | 2006-12-07 19:43:13 +0000 |
---|---|---|
committer | Andrew Wilcox <andy@protium.com> | 2006-12-07 19:43:13 +0000 |
commit | f68d2c99fa7ca759e2a1e76f856aa59a71bae59f (patch) | |
tree | 3bd009b557adc8340b0c599a221dd6a260f0b5ce | |
parent | 0165cbef046ef6a02bf096806f2e72d3785358a5 (diff) |
initscripts/initscripts-1.0: add openprotium on storcenter specific scripts and bb file.
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 . +} |