1 1.1 joerg #!/bin/sh 2 1.1 joerg # 3 1.1 joerg # $NetBSD: fsck_root,v 1.1 2009/04/21 16:08:57 joerg 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.1 joerg 14 1.1 joerg fsck_root_start() 15 1.1 joerg { 16 1.1 joerg if [ -e /fastboot ]; then 17 1.1 joerg echo "Fast boot: skipping disk checks." 18 1.1 joerg return 19 1.1 joerg fi 20 1.1 joerg trap : 2 # Ignore SIGINT, SIGQUIT, so we 21 1.1 joerg trap : 3 # enter single-user mode on failure. 22 1.1 joerg 23 1.1 joerg echo "Starting root file system check:" 24 1.1 joerg fsck $fsck_flags / 25 1.1 joerg local fsck_error="$?" 26 1.1 joerg case $fsck_error in 27 1.1 joerg 0) # OK 28 1.1 joerg return 29 1.1 joerg ;; 30 1.1 joerg 2) # Needs re-run, still fs errors 31 1.1 joerg echo "file system still has errors; re-run fsck manually!" 32 1.1 joerg ;; 33 1.1 joerg 4) # Root modified 34 1.1 joerg echo "Root filesystem was modified, rebooting ..." 35 1.1 joerg reboot 36 1.1 joerg echo "Reboot failed; help!" 37 1.1 joerg ;; 38 1.1 joerg 8) # Check failed 39 1.1 joerg echo "Automatic file system check failed; help!" 40 1.1 joerg ;; 41 1.1 joerg 12) # Got signal 42 1.1 joerg echo "Boot interrupted." 43 1.1 joerg ;; 44 1.1 joerg *) 45 1.1 joerg echo "Unknown error $fsck_error; help!" 46 1.1 joerg ;; 47 1.1 joerg esac 48 1.1 joerg stop_boot 49 1.1 joerg } 50 1.1 joerg 51 1.1 joerg load_rc_config $name 52 1.1 joerg run_rc_command "$1" 53