xref: /netbsd-src/etc/rc.d/fsck_root (revision d877c4c3c02304002c0642d7f34a58d07138d6a9)
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
10name="fsck_root"
11start_cmd="fsck_root_start"
12stop_cmd=":"
13
14fsck_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
51load_rc_config $name
52run_rc_command "$1"
53