| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | 
							- #!/bin/sh
 
- ########################################################################
 
- # Begin $rc_base/init.d/checkfs
 
- #
 
- # Description : File System Check
 
- #
 
- # Authors     : Gerard Beekmans - gerard@linuxfromscratch.org
 
- #               A. Luebke - luebke@users.sourceforge.net
 
- #
 
- # Version     : 00.00
 
- #
 
- # Notes       :
 
- #
 
- # Based on checkfs script from LFS-3.1 and earlier.
 
- #
 
- # From man fsck
 
- # 0    - No errors
 
- # 1    - File system errors corrected
 
- # 2    - System should be rebooted
 
- # 4    - File system errors left uncorrected
 
- # 8    - Operational error
 
- # 16   - Usage or syntax error
 
- # 32   - Fsck canceled by user request
 
- # 128  - Shared library error
 
- #
 
- #########################################################################
 
- . /etc/sysconfig/rc
 
- . ${rc_functions}
 
- case "${1}" in
 
- 	start)
 
- 		if [ -f /fastboot ]; then
 
- 			boot_mesg -n "/fastboot found, will not perform" ${INFO}
 
- 			boot_mesg " file system checks as requested."
 
- 			echo_ok
 
- 			exit 0
 
- 		fi
 
- 		boot_mesg "Mounting root file system in read-only mode..."
 
- 		mount -n -o remount,ro / >/dev/null
 
- 		evaluate_retval
 
- 		if [ ${?} != 0 ]; then
 
- 			echo_failure
 
- 			boot_mesg -n "FAILURE:\n\nCannot check root" ${FAILURE}
 
- 			boot_mesg -n " filesystem because it could not be mounted"
 
- 			boot_mesg -n " in read-only mode.\n\nAfter you"
 
- 			boot_mesg -n " press Enter, this system will be"
 
- 			boot_mesg -n " halted and powered off."
 
- 			boot_mesg -n "\n\nPress enter to continue..." ${INFO}
 
- 			boot_mesg "" ${NORMAL}
 
- 			read ENTER
 
- 			${rc_base}/init.d/halt stop
 
- 		fi
 
- 		if [ -f /forcefsck ]; then
 
- 			boot_mesg -n "/forcefsck found, forcing file" ${INFO}
 
- 			boot_mesg " system checks as requested."
 
- 			echo_ok
 
- 			options="-f"
 
- 		else
 
- 			options=""
 
- 		fi
 
- 		boot_mesg "Checking file systems..."
 
- 		# Note: -a option used to be -p; but this fails e.g.
 
- 		# on fsck.minix
 
- 		fsck ${options} -a -A -C -T
 
- 		error_value=${?}
 
- 		if [ "${error_value}" = 0 ]; then
 
- 			echo_ok
 
- 		fi
 
- 		if [ "${error_value}" = 1 ]; then
 
- 			echo_warning
 
- 			boot_mesg -n "WARNING:\n\nFile system errors" ${WARNING}
 
- 			boot_mesg -n " were found and have been corrected."
 
- 			boot_mesg -n "  You may want to double-check that"
 
- 			boot_mesg -n " everything was fixed properly."
 
- 			boot_mesg "" ${NORMAL}
 
- 		fi
 
- 		if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then
 
- 			echo_warning
 
- 			boot_mesg -n "WARNING:\n\nFile system errors" ${WARNING}
 
- 			boot_mesg -n " were found and have been been"
 
- 			boot_mesg -n " corrected, but the nature of the"
 
- 			boot_mesg -n " errors require this system to be"
 
- 			boot_mesg -n " rebooted.\n\nAfter you press enter,"
 
- 			boot_mesg -n " this system will be rebooted"
 
- 			boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
 
- 			boot_mesg "" ${NORMAL}
 
- 			read ENTER
 
- 			reboot -f
 
- 		fi
 
- 		if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then
 
- 			echo_failure
 
- 			boot_mesg -n "FAILURE:\n\nFile system errors" ${FAILURE}
 
- 			boot_mesg -n " were encountered that could not be"
 
- 			boot_mesg -n " fixed automatically.  This system"
 
- 			boot_mesg -n " cannot continue to boot and will"
 
- 			boot_mesg -n " therefore be halted until those"
 
- 			boot_mesg -n " errors are fixed manually by a"
 
- 			boot_mesg -n " System Administrator.\n\nAfter you"
 
- 			boot_mesg -n " press Enter, this system will be"
 
- 			boot_mesg -n " halted and powered off."
 
- 			boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
 
- 			boot_mesg "" ${NORMAL}
 
- 			read ENTER
 
- 		  ${rc_base}/init.d/halt stop
 
- 		fi
 
- 		if [ "${error_value}" -ge 16 ]; then
 
- 			echo_failure
 
- 			boot_mesg -n "FAILURE:\n\nUnexpected Failure" ${FAILURE}
 
- 			boot_mesg -n " running fsck.  Exited with error"
 
- 			boot_mesg -n " code: ${error_value}."
 
- 			boot_mesg "" ${NORMAL}
 
- 			exit ${error_value}
 
- 		fi
 
- 		;;
 
- 	*)
 
- 		echo "Usage: ${0} {start}"
 
- 		exit 1
 
- 		;;
 
- esac
 
- # End $rc_base/init.d/checkfs
 
 
  |