fsck_root revision 1.2
11.1Sjoerg#!/bin/sh
21.1Sjoerg#
31.2Sapb# $NetBSD: fsck_root,v 1.2 2009/04/28 13:08:51 apb Exp $
41.1Sjoerg#
51.1Sjoerg
61.1Sjoerg# PROVIDE: fsck_root
71.1Sjoerg
81.1Sjoerg$_rc_subr_loaded . /etc/rc.subr
91.1Sjoerg
101.1Sjoergname="fsck_root"
111.1Sjoergstart_cmd="fsck_root_start"
121.1Sjoergstop_cmd=":"
131.2Sapbfstab_file=/etc/fstab
141.1Sjoerg
151.1Sjoergfsck_root_start()
161.1Sjoerg{
171.1Sjoerg	if [ -e /fastboot ]; then
181.1Sjoerg		echo "Fast boot: skipping disk checks."
191.1Sjoerg		return
201.1Sjoerg	fi
211.1Sjoerg	trap : 2 		# Ignore SIGINT, SIGQUIT, so we
221.1Sjoerg	trap : 3		# enter single-user mode on failure.
231.1Sjoerg
241.2Sapb	# Do nothing if root file system has fs_passno=0 in /etc/fstab.
251.2Sapb	while read fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passno
261.2Sapb	do
271.2Sapb		case "${fs_spec}:${fs_file}:${fs_passno}" in
281.2Sapb		\#*|'':*)
291.2Sapb			continue # skip comment or blank line
301.2Sapb			;;
311.2Sapb		*:/:0)
321.2Sapb			echo "Not checking /: fs_passno = 0 in ${fstab_file}"
331.2Sapb			return
341.2Sapb			;;
351.2Sapb		*:/:*)	break
361.2Sapb			;;
371.2Sapb		esac
381.2Sapb	done <"${fstab_file}"
391.2Sapb
401.1Sjoerg	echo "Starting root file system check:"
411.1Sjoerg	fsck $fsck_flags /
421.1Sjoerg	local fsck_error="$?"
431.1Sjoerg	case $fsck_error in
441.1Sjoerg	0)	# OK
451.1Sjoerg		return
461.1Sjoerg		;;
471.1Sjoerg	2)	# Needs re-run, still fs errors
481.1Sjoerg		echo "file system still has errors; re-run fsck manually!"
491.1Sjoerg		;;
501.1Sjoerg	4)	# Root modified
511.1Sjoerg		echo "Root filesystem was modified, rebooting ..."
521.1Sjoerg		reboot
531.1Sjoerg		echo "Reboot failed; help!"
541.1Sjoerg		;;
551.1Sjoerg	8)	# Check failed
561.1Sjoerg		echo "Automatic file system check failed; help!"
571.1Sjoerg		;;
581.1Sjoerg	12)	# Got signal
591.1Sjoerg		echo "Boot interrupted."
601.1Sjoerg		;;
611.1Sjoerg	*)
621.1Sjoerg		echo "Unknown error $fsck_error; help!"
631.1Sjoerg		;;
641.1Sjoerg	esac
651.1Sjoerg	stop_boot
661.1Sjoerg}
671.1Sjoerg
681.1Sjoergload_rc_config $name
691.1Sjoergrun_rc_command "$1"
70