home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 February
/
PCWorld_2000-02_cd.bin
/
live
/
etc
/
init.d
/
checkroot.sh
< prev
next >
Wrap
Text File
|
1999-01-12
|
3KB
|
122 lines
#
# checkroot.sh Check to root file system.
#
# Version: @(#)checkroot.sh 2.76 12-Jan-1999 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.
#
[ "$SULOGIN" = yes ] && sulogin -t 30 $CONSOLE
#
# Activate the swap device(s) in /etc/fstab. This needs to be done
# before fsck, since fsck can be quite memory-hungry.
#
if [ -x /sbin/swapon ]
then
[ "$VERBOSE" != no ] && echo "Activating swap..."
swapon -a 2>/dev/null
fi
#
# Ensure that bdflush (update) is running before any major I/O is
# performed (the following fsck is a good example of such activity :).
#
[ -x /sbin/update ] && update
#
# Check the root file system.
#
if [ -f /fastboot ]
then
echo "Fast boot, no file system check"
else
#
# Ensure that root is quiescent and read-only before fsck'ing.
#
mount -n -o remount,ro /
if [ $? = 0 ]
then
if [ -f /forcefsck ]
then
force="-f"
else
force=""
fi
if [ "$FSCKFIX" = yes ]
then
fix="-y"
else
fix="-a"
fi
echo "Checking root file system..."
fsck $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 file system
# errors were corrected but that the boot may proceed.
#
if [ $? -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 file system 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
# 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
#
# 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.
#
(
mode=rw
while read fs mnt type opts rest
do
[ "$mnt" != / ] && continue
case "$fs" in
""|\#*)
continue;
;;
esac
case "$opts" in
ro|ro,*|*,ro|*,ro,*)
mode=ro
;;
esac
done
mount -n -o remount,$mode /
if [ "$mode" = rw ]
then
rm -f /etc/mtab~ /etc/nologin
: > /etc/mtab
mount -o remount,rw /
mount /proc
else
mount -n /proc
fi
) < /etc/fstab