home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / etc / init.d / checkfs.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  2006-10-06  |  2.8 KB  |  130 lines

  1. #! /bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides:          checkfs
  4. # Required-Start:    modutils checkroot
  5. # Required-Stop:
  6. # Should-Start:      lvm cryptdisks
  7. # Should-Stop:
  8. # Default-Start:     S
  9. # Default-Stop:
  10. # Short-Description: Check all filesystems.
  11. ### END INIT INFO
  12.  
  13. PATH=/sbin:/bin
  14. FSCK_LOGFILE=/var/log/fsck/checkfs
  15. [ "$FSCKFIX" ] || FSCKFIX=no
  16. . /lib/init/vars.sh
  17.  
  18. . /lib/lsb/init-functions
  19.  
  20. # Always output fsck progress
  21. stdin=`readlink /proc/self/fd/0`
  22. if [ "${stdin#/dev/null}" != "$stdin" ]; then
  23.     exec </dev/console >/dev/console 2>&1
  24. fi
  25.  
  26. do_start () {
  27.     # See if we're on AC Power
  28.     # If not, we're not gonna run our check
  29.     if which on_ac_power >/dev/null 2>&1
  30.     then
  31.         on_ac_power >/dev/null 2>&1
  32.         if [ $? -eq 1 ]
  33.         then
  34.             [ "$VERBOSE" = no ] || log_success_msg "Running on battery power, so skipping file system check."
  35.             BAT=yes
  36.         fi
  37.     fi
  38.  
  39.     #
  40.     # Check the rest of the file systems.
  41.     #
  42.     if [ ! -f /fastboot ] && [ ! "$BAT" ] && [ "$FSCKTYPES" != "none" ]
  43.     then
  44.         if [ -f /forcefsck ]
  45.         then
  46.             force="-f"
  47.         else
  48.             force=""
  49.         fi
  50.         if [ "$FSCKFIX" = yes ]
  51.         then
  52.             fix="-y"
  53.         else
  54.             fix="-a"
  55.         fi
  56.         spinner="-C"
  57.         case "$TERM" in
  58.           dumb|network|unknown|"")
  59.             spinner=""
  60.             ;;
  61.         esac
  62.         [ "$(uname -m)" = s390 ] && spinner=""  # This should go away
  63.         FSCKTYPES_OPT=""
  64.         [ "$FSCKTYPES" ] && FSCKTYPES_OPT="-t $FSCKTYPES"
  65.         handle_failed_fsck() {
  66.             log_failure_msg "File system check failed. 
  67. A log is being saved in ${FSCK_LOGFILE} if that location is writable. 
  68. Please repair the file system manually."
  69.             log_warning_msg "A maintenance shell will now be started. 
  70. CONTROL-D will terminate this shell and resume system boot."
  71.             # Start a single user shell on the console
  72.             if ! sulogin $CONSOLE
  73.             then
  74.                 log_failure_msg "Attempt to start maintenance shell failed. 
  75. Continuing with system boot in 5 seconds."
  76.                 sleep 5
  77.             fi
  78.         }
  79.         if [ "$VERBOSE" = no ]
  80.         then
  81.             log_action_begin_msg "Checking file systems"
  82.             logsave -s $FSCK_LOGFILE fsck $spinner -R -A $fix $force $FSCKTYPES_OPT
  83.             FSCKCODE=$?
  84.             if [ "$FSCKCODE" -gt 1 ]
  85.             then
  86.                 log_action_end_msg 1 "code $FSCKCODE"
  87.                 handle_failed_fsck
  88.             else
  89.                 log_action_end_msg 0
  90.             fi
  91.         else
  92.             if [ "$FSCKTYPES" ]
  93.             then
  94.                 log_action_msg "Will now check all file systems of types $FSCKTYPES"
  95.             else
  96.                 log_action_msg "Will now check all file systems"
  97.             fi
  98.             logsave -s $FSCK_LOGFILE fsck $spinner -V -R -A $fix $force $FSCKTYPES_OPT
  99.             FSCKCODE=$?
  100.             if [ "$FSCKCODE" -gt 1 ]
  101.             then
  102.                 handle_failed_fsck
  103.             else
  104.                 log_success_msg "Done checking file systems. 
  105. A log is being saved in ${FSCK_LOGFILE} if that location is writable."
  106.             fi
  107.         fi
  108.     fi
  109.     rm -f /fastboot /forcefsck
  110. }
  111.  
  112. case "$1" in
  113.   start|"")
  114.     do_start
  115.     ;;
  116.   restart|reload|force-reload)
  117.     echo "Error: argument '$1' not supported" >&2
  118.     exit 3
  119.     ;;
  120.   stop)
  121.     # No-op
  122.     ;;
  123.   *)
  124.     echo "Usage: checkfs.sh [start|stop]" >&2
  125.     exit 3
  126.     ;;
  127. esac
  128.  
  129. :
  130.