diff options
author | Oyvind Repvik <nail@nslu2-linux.org> | 2006-02-06 00:25:26 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2006-02-06 00:25:26 +0000 |
commit | 669db9e0db18fb3f151116e2268a46017661cf7c (patch) | |
tree | 967952480cfacf9bb174fb9f8a032465ab6e8096 /packages/initscripts | |
parent | 8b1cc22759301dfcbb1c31d4c23562069b2b0d26 (diff) |
initscripts: Update SlugOS initscripts
Update checkroot to include led status/beep on error, mount swap
Update checkroot, move $rootcheck to $ROOTFSCK in rcS
Update mountall, remove the swap mount, since it's already mounted
Diffstat (limited to 'packages/initscripts')
-rw-r--r-- | packages/initscripts/initscripts-1.0/slugos/checkroot.sh | 161 | ||||
-rw-r--r-- | packages/initscripts/initscripts-1.0/slugos/mountall.sh | 27 | ||||
-rw-r--r-- | packages/initscripts/initscripts-slugos_1.0.bb | 3 |
3 files changed, 189 insertions, 2 deletions
diff --git a/packages/initscripts/initscripts-1.0/slugos/checkroot.sh b/packages/initscripts/initscripts-1.0/slugos/checkroot.sh new file mode 100644 index 0000000000..806379f274 --- /dev/null +++ b/packages/initscripts/initscripts-1.0/slugos/checkroot.sh @@ -0,0 +1,161 @@ +# +# 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 +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" + test "$mnt" != / && continue + rootopts="$opts" + test "$pass" = 0 -o "$pass" = "" && ROOTFSCK=no + case "$opts" in + ro|ro,*|*,ro|*,ro,*) + rootmode=ro + ;; + esac +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. +# +# We don't test whether we're running a 2.[0123].x kernel and md +# since that's plain too old. + +if test "$DOSWAP" = yes +then + swaps="$(blkid -t TYPE=swap -o device 2>/dev/null)" + if test -n "$swaps" + then + swapon $swaps 2>/dev/null + else + swapon -a 2> /dev/null + fi +fi + +# +# Check the root filesystem. +# +if test -f /fastboot || test "$ROOTFSCK" != yes +then + test "$ROOTFSCK" = yes && echo "Fast boot, no filesystem check" +else + leds disk-1 slow + # + # 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 "$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. + # + if test "$?" -gt 1 + then + # 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. Please note" + echo "that the root filesystem is currently mounted read-only. To" + echo "remount it read-write:" + echo + echo " # mount -n -o remount,rw /" + echo + echo "CONTROL-D will exit from this shell and REBOOT the system." + echo + leds system panic + beep -r 5 + # 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 + leds disk-1 off +fi + +# +# If the root filesystem was not marked as read-only in /etc/fstab, +# remount the rootfs rw but do not try to change mtab because it +# is on a ro fs until the remount succeeded. Then clean up old mtabs +# and finally write the new mtab. +# +mount -n -o remount,$rootopts / +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 + mount -f /sys + test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs" +fi + +: exit 0 diff --git a/packages/initscripts/initscripts-1.0/slugos/mountall.sh b/packages/initscripts/initscripts-1.0/slugos/mountall.sh new file mode 100644 index 0000000000..94ea8217fd --- /dev/null +++ b/packages/initscripts/initscripts-1.0/slugos/mountall.sh @@ -0,0 +1,27 @@ +# +# mountall.sh Mount all filesystems. +# +# Version: @(#)mountall.sh 2.83-2 01-Nov-2001 miquels@cistron.nl +# +. /etc/default/rcS + +# +# Mount local filesystems in /etc/fstab. For some reason, people +# might want to mount "proc" several times, and mount -v complains +# about this. So we mount "proc" filesystems without -v. +# +test "$VERBOSE" != no && echo "Mounting local filesystems..." +mount -at nonfs,nosmbfs,noncpfs 2>/dev/null + +# +# We might have mounted something over /dev, see if /dev/initctl is there. +# +if test ! -p /dev/initctl +then + rm -f /dev/initctl + mknod -m 600 /dev/initctl p +fi +kill -USR1 1 + +: exit 0 + diff --git a/packages/initscripts/initscripts-slugos_1.0.bb b/packages/initscripts/initscripts-slugos_1.0.bb index 05449958f6..59c8d30f00 100644 --- a/packages/initscripts/initscripts-slugos_1.0.bb +++ b/packages/initscripts/initscripts-slugos_1.0.bb @@ -11,7 +11,7 @@ RCONFLICTS = "initscripts" # All other standard definitions inherited from initscripts # Except the PR which is hacked here. The format used is # a suffix -PR := "${PR}.5" +PR := "${PR}.6" FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}" @@ -19,7 +19,6 @@ PACKAGES = "${PN}" SRC_URI += "file://alignment.sh" SRC_URI += "file://domainname.sh" -SRC_URI += "file://rootopts.patch;patch=1" SRC_URI += "file://devices.patch;patch=1" # Without this it is not possible to patch checkroot.sh |