| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | #!/bin/sh######################################################################### Begin checkfs## Description : File System Check## Authors     : Gerard Beekmans - gerard@linuxfromscratch.org#               A. Luebke - luebke@users.sourceforge.net#               DJ Lucas - dj@linuxfromscratch.org# Update      : Bruce Dubbs - bdubbs@linuxfromscratch.org## Version     : LFS 7.0## 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############################################################################# BEGIN INIT INFO# Provides:            checkfs# Required-Start:      udev swap $time# Should-Start:# Required-Stop:# Should-Stop:# Default-Start:       S# Default-Stop:# Short-Description:   Checks local filesystems before mounting.# Description:         Checks local filesystmes before mounting.# X-LFS-Provided-By:   LFS### END INIT INFO. /lib/lsb/init-functionscase "${1}" in   start)      if [ -f /fastboot ]; then         msg="/fastboot found, will omit "         msg="${msg} file system checks as requested.\n"         log_info_msg "${msg}"         exit 0      fi      log_info_msg "Mounting root file system in read-only mode... "      mount -n -o remount,ro / >/dev/null      if [ ${?} != 0 ]; then         log_failure_msg2         msg="\n\nCannot check root "         msg="${msg}filesystem because it could not be mounted "         msg="${msg}in read-only mode.\n\n"         msg="${msg}After you press Enter, this system will be "         msg="${msg}halted and powered off.\n\n"         log_failure_msg "${msg}"         log_info_msg "Press Enter to continue..."          wait_for_user         /etc/rc.d/init.d/halt stop      else         log_success_msg2      fi      if [ -f /forcefsck ]; then         msg="\n/forcefsck found, forcing file"          msg="${msg} system checks as requested."         log_success_msg "$msg"         options="-f"      else         options=""      fi      log_info_msg "Checking file systems..."      # Note: -a option used to be -p; but this fails e.g. on fsck.minix      fsck ${options} -a -A -C -T >/dev/null      error_value=${?}      if [ "${error_value}" = 0 ]; then         log_success_msg2      fi      if [ "${error_value}" = 1 ]; then         msg="\nWARNING:\n\nFile system errors "         msg="${msg}were found and have been corrected.\n"         msg="${msg}You may want to double-check that "         msg="${msg}everything was fixed properly."         log_warning_msg "$msg"      fi      if [ "${error_value}" = 2 -o "${error_value}" = 3 ]; then         msg="\nWARNING:\n\nFile system errors "         msg="${msg}were found and have been been "         msg="${msg}corrected, but the nature of the "         msg="${msg}errors require this system to be rebooted.\n\n"         msg="${msg}After you press enter, "         msg="${msg}this system will be rebooted\n\n"         log_failure_msg "$msg"         log_info_msg "Press Enter to continue..."          wait_for_user         reboot -f      fi      if [ "${error_value}" -gt 3 -a "${error_value}" -lt 16 ]; then         msg="\nFAILURE:\n\nFile system errors "         msg="${msg}were encountered that could not be "         msg="${msg}fixed automatically.  This system "         msg="${msg}cannot continue to boot and will "         msg="${msg}therefore be halted until those "         msg="${msg}errors are fixed manually by a "         msg="${msg}System Administrator.\n\n"         msg="${msg}After you press Enter, this system will be "         msg="${msg}halted and powered off.\n\n"         log_failure_msg "$msg"         log_info_msg "Press Enter to continue..."          wait_for_user         /etc/rc.d/init.d/halt stop      fi      if [ "${error_value}" -ge 16 ]; then         msg="\nFAILURE:\n\nUnexpected Failure "         msg="${msg}running fsck.  Exited with error "         msg="${msg} code: ${error_value}."         log_failure_msg $msg         exit ${error_value}      fi      exit 0      ;;   *)      echo "Usage: ${0} {start}"      exit 1      ;;esac# End checkfs
 |