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