diff options
author | Andrew Wilcox <andy@protium.com> | 2006-12-23 22:02:58 +0000 |
---|---|---|
committer | Andrew Wilcox <andy@protium.com> | 2006-12-23 22:02:58 +0000 |
commit | e934fbdc234809387a52cb3413b198101ca17a6e (patch) | |
tree | f095428810a4c3b47ed33db36976adf2b7745ec5 /packages/openprotium-init/files/initscripts | |
parent | 2431508da0e4c9982679df090d44ee477b7c9355 (diff) |
openprotium-init: a descendant of slugos-init with protium and storcenter related changes.
Diffstat (limited to 'packages/openprotium-init/files/initscripts')
9 files changed, 260 insertions, 0 deletions
diff --git a/packages/openprotium-init/files/initscripts/.mtn2git_empty b/packages/openprotium-init/files/initscripts/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/openprotium-init/files/initscripts/.mtn2git_empty diff --git a/packages/openprotium-init/files/initscripts/fixfstab b/packages/openprotium-init/files/initscripts/fixfstab new file mode 100644 index 0000000000..67116a12fd --- /dev/null +++ b/packages/openprotium-init/files/initscripts/fixfstab @@ -0,0 +1,91 @@ +#!/bin/sh +# validate /etc/fstab against the current UUID list in +# /etc/uuid_by_partition +# +. /etc/default/functions +pfile=/etc/uuid_by_partition + +# +# use debug to find out what is going on +test "$1" = start -o "$1" = debug || exit 0 + +# +# obtain the current list of parititions with UUIDs +newlist="$(uuid_by_partition)" + +if test -r "$pfile" +then + # read the old list + oldlist="$(cat "$pfile")" + # + # if it hasn't changed nothing need be done + test "$newlist" = "$oldlist" && exit 0 + # + # it has changed, but this only matters if + # a previously existing uuid has moved, build + # a list of old device vs new device for every + # uuid which has moved + changedlist="$( + { echo "$oldlist" + echo "$newlist" + } | awk 'device[$2] == ""{device[$2] = $1} + device[$2] != $1{print device[$2], $1}')" + + if test -n "$changedlist" + then + # at least one partition has moved, scan the + # current fstab to see if it has a reference + # to this partition + changedfstab="$( + { echo "$changedlist" + echo '#fstab' + cat /etc/fstab + } | awk 'BEGIN{list=1} + list==1 && $0=="#fstab"{list=0; continue} + list==1{new[$1] = $2; continue} + new[$1] != ""{print $1, new[$1]}')" + + # if this list is not empty edit the fstab + if test -n "$changedfstab" + then + rm -f /tmp/fstab.$$ + # if the edit fails then do not overwrite the old + # partition list - just exit with an error + { echo "$changedlist" + echo '#fstab' + cat /etc/fstab + } | awk 'BEGIN{list=1} + list==1 && $0=="#fstab"{list=0; continue} + list==1{new[$1] = $2; continue} + new[$1] != ""{$1 = new[$1]} + {print}' >/tmp/fstab.$$ || { + if test "$1" = start + then + logger -s "/etc/init.d/fixfstab: /tmp/fstab.$$: awk failed" + else + echo "debug: awk script failed with:" >&2 + echo "$changedlist" >&2 + echo "output in /tmp/fstab.$$" >&2 + fi + exit 1 + } + + if test "$1" = start + then + mv /tmp/fstab.$$ /etc/fstab || { + logger -s "/etc/init.d/fixfstab: /tmp/fstab.$$: update failed" + exit 1 + } + else + echo "debug: fstab changed:" + diff -u /etc/fstab /tmp/fstab.$$ + fi + fi + fi +fi + +# write the new list to the file, only if we +# are doing something... +test "$1" = start && echo "$newlist" >"$pfile" + +exit 0 diff --git a/packages/openprotium-init/files/initscripts/loadmodules.sh b/packages/openprotium-init/files/initscripts/loadmodules.sh new file mode 100644 index 0000000000..c5d44d1067 --- /dev/null +++ b/packages/openprotium-init/files/initscripts/loadmodules.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +. /etc/default/modulefunctions # Load module loading logic + +loadnetmods + +loaddiskmods + +loadmiscmods + +exit 0 diff --git a/packages/openprotium-init/files/initscripts/rmrecovery b/packages/openprotium-init/files/initscripts/rmrecovery new file mode 100644 index 0000000000..eec822b154 --- /dev/null +++ b/packages/openprotium-init/files/initscripts/rmrecovery @@ -0,0 +1,4 @@ +#!/bin/sh +# Run to remove /.recovery if the boot seems to have succeeded +test -e /.recovery && rm -f /.recovery +exit 0 diff --git a/packages/openprotium-init/files/initscripts/sysconfsetup b/packages/openprotium-init/files/initscripts/sysconfsetup new file mode 100644 index 0000000000..a4f9074d9c --- /dev/null +++ b/packages/openprotium-init/files/initscripts/sysconfsetup @@ -0,0 +1,46 @@ +#!/bin/sh +# This script is run once when the system first boots. Its sole +# purpose is to create /etc/default/sysconf (the overall system +# configuration file) and other files derived from this. +# +# The script runs immediately after S10checkroot.sh - this is the +# point at which the rootfs will be mounted rw even if the kernel +# booted with it ro. +# +# rm or mv the file (/etc/default/sysconf) to recreate it, run this +# script with the reload option to overwrite the system files. The +# configuration files described in sysconf_reload (in +# /sbin/sysconf) will be overwritten on reload. +# +# start: standard startup, do a complete (auto) restore if necessary +# reinit: always do a complete auto restore +# reload: just reload sysconf (no config files!) +# +# /etc/default/functions contains useful utility functions - it's +# in a separate file so that it can be loaded by any script +. /etc/default/functions +load_functions sysconf || exit 1 +# +case "$1" in +start) test -s /etc/default/sysconf || { + if sysconf_read + then + if sysconf_valid + then + sysconf_restore auto + else + sysconf_reload + fi + else + sysconf_default + sysconf_reload + fi + };; + +reload) test -s /etc/default/sysconf || sysconf_read || sysconf_default + sysconf_reload;; + +reinit) sysconf_restore auto;; + +*) ;; +esac diff --git a/packages/openprotium-init/files/initscripts/syslog.buffer b/packages/openprotium-init/files/initscripts/syslog.buffer new file mode 100644 index 0000000000..9285c02946 --- /dev/null +++ b/packages/openprotium-init/files/initscripts/syslog.buffer @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Invoke the syslog startup if the configuration +# uses (only) 'buffer' as the DESTINATION +DESTINATION= +test -f /etc/syslog.conf && . /etc/syslog.conf +doit= + +for d in $DESTINATION +do + case "$d" in + buffer) doit=1;; + file) exit 0;; + remote) exit 0;; + *) echo "/etc/syslog.conf: $d: unknown destination" >&2 + exit 1;; + esac +done + +test -n "$doit" -a -x /etc/init.d/syslog && + exec /etc/init.d/syslog "$@" + +exit 0 diff --git a/packages/openprotium-init/files/initscripts/syslog.file b/packages/openprotium-init/files/initscripts/syslog.file new file mode 100644 index 0000000000..80ee5f0174 --- /dev/null +++ b/packages/openprotium-init/files/initscripts/syslog.file @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Invoke the syslog startup if the configuration +# uses 'file' (and, optionally, buffer) as the DESTINATION +DESTINATION= +test -f /etc/syslog.conf && . /etc/syslog.conf +doit= + +for d in $DESTINATION +do + case "$d" in + buffer) :;; + file) doit=1;; + remote) exit 0;; + *) echo "/etc/syslog.conf: $d: unknown destination" >&2 + exit 1;; + esac +done + +test -n "$doit" -a -x /etc/init.d/syslog && + exec /etc/init.d/syslog "$@" + +exit 0 diff --git a/packages/openprotium-init/files/initscripts/syslog.network b/packages/openprotium-init/files/initscripts/syslog.network new file mode 100644 index 0000000000..3d7f4ab8e6 --- /dev/null +++ b/packages/openprotium-init/files/initscripts/syslog.network @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Invoke the syslog startup if the configuration +# uses 'remote', or doesn't use 'buffer' or 'file' +DESTINATION= +test -f /etc/syslog.conf && . /etc/syslog.conf +doit= +doneit= + +for d in $DESTINATION +do + case "$d" in + buffer) doneit=1;; + file) doneit=1;; + remote) doit=1;; + *) doit=1 + echo "/etc/syslog.conf: $d: unknown destination" >&2 + exit 1;; + esac +done + +# One of doneit or doit is set unless the DESTINATION value +# is empty (which is probably an error), let syslog handle +# the error. +test \( -n "$doit" -o -z "$doneit" \) -a -x /etc/init.d/syslog && + exec /etc/init.d/syslog "$@" + +exit 0 diff --git a/packages/openprotium-init/files/initscripts/umountinitrd.sh b/packages/openprotium-init/files/initscripts/umountinitrd.sh new file mode 100644 index 0000000000..b590ae68b5 --- /dev/null +++ b/packages/openprotium-init/files/initscripts/umountinitrd.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# umount /mnt, which is where the initrd ends up mounted +# if the directory /initrd is not present, if this fails +# then the /initrd is mounted and we want to remount that +# ro - this works round the shutdown -r hang problem +. /etc/default/functions +# +# if we are turnup'ed to disk, then just unmount the initrd all together +# +if [ -e /initrd/dev/.devfsd ]; then + [ "$VERBOSE" = "very" ] && echo "Unmounting initrd..." + umount /initrd/dev + umount /initrd + exit 0 +fi + +while read device directory remainder +do + case "$directory" in + /mnt) echo "InitRD: unmount initrd on /mnt" >&2 + umount /mnt;; + /initrd)# need the device for a remount + ffspart=Flashdisk + ffsdev="$(mtblockdev $ffspart)" + echo "InitRD: remount $ffdev read-only on /initrd" >&2 + if test -n "$ffsdev" -a -b "$ffsdev" + then + mount -o remount,ro "$ffsdev" /initrd + else + echo "Flashdisk: $ffsdev: flash device not found" >&2 + fi;; + esac +done </proc/mounts |