Create a new file /etc/init.d/checkfs containing the following:
cat > checkfs << "EOF"
#!/bin/sh
# Begin /etc/init.d/checkfs
#
# Include the functions declared in the /etc/init.d/functions file
#
source /etc/init.d/functions
#
# Activate all the swap partitions declared in the /etc/fstab file
#
echo -n "Activating swap..."
/sbin/swapon -a
evaluate_retval
#
# If the /fastboot file exists we don't want to run the partition checks
#
if [ -f /fastboot ]
then
echo "Fast boot, no file system check"
else
#
# Mount the root partition read-only (just in case the kernel mounts it
# read-write and we don't want to run fsck on a read-write mounted
# partition).
#
/bin/mount -n -o remount,ro /
if [ $? = 0 ]
then
#
# If the /forcefsck file exists we want to force a partition check even
# if the partition was unmounted cleanly the last time
#
if [ -f /forcefsck ]
then
echo -n "/forcefsck exists, forcing "
echo "file system check"
force="-f"
else
force=""
fi
#
# Check all the file systems mentioned in /etc/fstab that have the
# fs_passno value set to 1 or 2 (the 6th field. See man fstab for more
# info)
#
echo "Checking file systems..."
/sbin/fsck $force -a -A -C -T
#
# If something went wrong during the checks of one of the partitions,
# fsck will exit with a return value greater than 1. If this is
# the case we start sulogin so you can repair the damage manually
#
if [ $? -gt 1 ]
then
$FAILURE
echo
echo -n "fsck failed. Please repair your file "
echo "systems manually by running /sbin/fsck"
echo "without the -a option"
echo
echo -n "Please note that the root file system "
echo "is currently mounted in read-only mode."
echo
echo -n "I will start sulogin now. When you "
echo "logout I will reboot your system."
echo
$NORMAL
/sbin/sulogin
/sbin/reboot -f
else
print_status success
fi
else
#
# If the remount to read-only mode didn't work abort the fsck and print
# an error
#
echo -n "Cannot check root file system because it "
echo "could not be mounted in read-only mode."
fi
fi
# End /etc/init.d/checkfs
EOF