aboutsummaryrefslogtreecommitdiffstats
path: root/chapter07/checkfs.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter07/checkfs.sgml')
-rw-r--r--chapter07/checkfs.sgml116
1 files changed, 116 insertions, 0 deletions
diff --git a/chapter07/checkfs.sgml b/chapter07/checkfs.sgml
new file mode 100644
index 000000000..2350a0056
--- /dev/null
+++ b/chapter07/checkfs.sgml
@@ -0,0 +1,116 @@
+<sect1 id="ch07-checkfs">
+<title>Creating the checkfs script</title>
+
+<para>
+Create a new file <filename>/etc/init.d/checkfs</filename> containing
+the following:
+</para>
+
+<literallayout>
+
+<userinput>cat &gt; checkfs &lt;&lt; "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 -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
+<userinput>EOF</userinput>
+
+</literallayout>
+
+</sect1>
+