Home | History | Annotate | Line # | Download | only in rc.d
fsck_root revision 1.1
      1 #!/bin/sh
      2 #
      3 # $NetBSD: fsck_root,v 1.1 2009/04/21 16:08:57 joerg Exp $
      4 #
      5 
      6 # PROVIDE: fsck_root
      7 
      8 $_rc_subr_loaded . /etc/rc.subr
      9 
     10 name="fsck_root"
     11 start_cmd="fsck_root_start"
     12 stop_cmd=":"
     13 
     14 fsck_root_start()
     15 {
     16 	if [ -e /fastboot ]; then
     17 		echo "Fast boot: skipping disk checks."
     18 		return
     19 	fi
     20 	trap : 2 		# Ignore SIGINT, SIGQUIT, so we
     21 	trap : 3		# enter single-user mode on failure.
     22 
     23 	echo "Starting root file system check:"
     24 	fsck $fsck_flags /
     25 	local fsck_error="$?"
     26 	case $fsck_error in
     27 	0)	# OK
     28 		return
     29 		;;
     30 	2)	# Needs re-run, still fs errors
     31 		echo "file system still has errors; re-run fsck manually!"
     32 		;;
     33 	4)	# Root modified
     34 		echo "Root filesystem was modified, rebooting ..."
     35 		reboot
     36 		echo "Reboot failed; help!"
     37 		;;
     38 	8)	# Check failed
     39 		echo "Automatic file system check failed; help!"
     40 		;;
     41 	12)	# Got signal
     42 		echo "Boot interrupted."
     43 		;;
     44 	*)
     45 		echo "Unknown error $fsck_error; help!"
     46 		;;
     47 	esac
     48 	stop_boot
     49 }
     50 
     51 load_rc_config $name
     52 run_rc_command "$1"
     53