mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-01-19 13:37:39 +00:00
b08f409653
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@174 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
117 lines
2.9 KiB
XML
117 lines
2.9 KiB
XML
<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 > 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 -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>
|
|
|