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