# # 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. # rootmode=rw rootopts=rw test "$ENABLE_ROOTFS_FSCK" = yes && rootcheck="yes" || rootcheck="no" 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" # Currently we do not care about the other entries if test "$mnt" = "/" then #echo "[$fs] [$mnt] [$type] [$opts] [$dump] [$pass] [$junk]" rootopts="$opts" roottype="$type" #The "spinner" is broken on busybox sh TERM=dumb test "$pass" = 0 -o "$pass" = "" && rootcheck=no # Allow fsck for ext2 and ext3 rootfs, disable for everything else case "$type" in ext2|ext3) ;; *) rootcheck=no;; esac if test "$rootcheck" = yes then if ! test -x "/sbin/fsck.${roottype}" then echo -e "\n * * * WARNING: /sbin/fsck.${roottype} is missing! * * *\n" rootcheck=no fi fi case "$opts" in ro|ro,*|*,ro|*,ro,*) rootmode=ro ;; esac fi done < /etc/fstab # # Activate the swap device(s) in /etc/fstab. This needs to be done # before fsck, since fsck can be quite memory-hungry. # doswap=no test -d /proc/1 || mount -n /proc case "`uname -r`" in 2.[0123].*) if test $swap_on_md = yes && grep -qs resync /proc/mdstat then test "$VERBOSE" != no && echo "Not activating swap - RAID array resyncing" else doswap=yes fi ;; *) doswap=yes ;; esac if test $doswap = yes then test "$VERBOSE" != no && echo "Activating swap" swapon -a 2> /dev/null fi # # Check the root filesystem. # if test -f /fastboot || test $rootcheck = no then test $rootcheck = yes && echo "Fast boot, no filesystem check" else # # 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 `uname -m` = s390 && spinner="" # This should go away test "$VERBOSE" != no && echo "Checking root filesystem..." fsck $spinner $force $fix / /etc/mtab fi mount -f -o remount / mount -f -o remount /proc test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs" fi : exit 0