| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | <sect1 id="ch07-checkfs"><title>Creating the checkfs script</title><para>Create a new file <filename>/etc/init.d/checkfs</filename> containingthe following:</para><literallayout><userinput>cat > checkfs << "EOF"</userinput>#!/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 -aevaluate_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."        fifi# End /etc/init.d/checkfs<userinput>EOF</userinput></literallayout></sect1>
 |