Home | History | Annotate | Line # | Download | only in rc.d
      1  1.1     joerg #!/bin/sh
      2  1.1     joerg #
      3  1.6       apb # $NetBSD: fsck_root,v 1.6 2011/09/20 12:13:21 apb Exp $
      4  1.1     joerg #
      5  1.1     joerg 
      6  1.1     joerg # PROVIDE: fsck_root
      7  1.1     joerg 
      8  1.1     joerg $_rc_subr_loaded . /etc/rc.subr
      9  1.1     joerg 
     10  1.1     joerg name="fsck_root"
     11  1.1     joerg start_cmd="fsck_root_start"
     12  1.1     joerg stop_cmd=":"
     13  1.2       apb fstab_file=/etc/fstab
     14  1.1     joerg 
     15  1.1     joerg fsck_root_start()
     16  1.1     joerg {
     17  1.1     joerg 	if [ -e /fastboot ]; then
     18  1.1     joerg 		echo "Fast boot: skipping disk checks."
     19  1.1     joerg 		return
     20  1.1     joerg 	fi
     21  1.1     joerg 	trap : 2 		# Ignore SIGINT, SIGQUIT, so we
     22  1.1     joerg 	trap : 3		# enter single-user mode on failure.
     23  1.1     joerg 
     24  1.6       apb 	# Do nothing if root file system has fs_passno=0 in /etc/fstab,
     25  1.6       apb 	# or if root file system is not mentioned in /etc/fstab, or if
     26  1.6       apb 	# root file system seems to be a network mount.
     27  1.6       apb 	root_in_fstab=false
     28  1.2       apb 	while read fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passno
     29  1.2       apb 	do
     30  1.6       apb 		# skip comment or blank line
     31  1.6       apb 		case "${fs_spec}" in
     32  1.6       apb 		\#*|'') continue ;;
     33  1.6       apb 		esac
     34  1.6       apb 
     35  1.6       apb 		# fs_freq and fs_passno default to 0 if not specified
     36  1.6       apb 		: ${fs_freq:=0} ${fs_passno:=0}
     37  1.6       apb 
     38  1.6       apb 		case "${fs_file},${fs_passno}" in
     39  1.6       apb 		/,0)
     40  1.2       apb 			echo "Not checking /: fs_passno = 0 in ${fstab_file}"
     41  1.2       apb 			return
     42  1.2       apb 			;;
     43  1.6       apb 		/,*)
     44  1.6       apb 			root_in_fstab=true
     45  1.6       apb 			case "${fs_spec}" in
     46  1.3  christos 			*:*)
     47  1.6       apb 				echo "Not checking /: network mount"
     48  1.3  christos 				return
     49  1.3  christos 				;;
     50  1.3  christos 			esac
     51  1.2       apb 			;;
     52  1.2       apb 		esac
     53  1.4       mrg 	done < "${fstab_file}"
     54  1.6       apb 
     55  1.6       apb 	if $root_in_fstab; then
     56  1.6       apb 		echo "Starting root file system check:"
     57  1.6       apb 		fsck $fsck_flags /
     58  1.6       apb 		handle_fsck_error "$?"
     59  1.6       apb 		return
     60  1.6       apb 	else
     61  1.6       apb 		echo "Not checking /: not listed in ${fstab_file}"
     62  1.6       apb 	fi
     63  1.1     joerg }
     64  1.1     joerg 
     65  1.1     joerg load_rc_config $name
     66  1.1     joerg run_rc_command "$1"
     67