diff options
Diffstat (limited to 'etc/rc.d/fsck')
-rwxr-xr-x | etc/rc.d/fsck | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/etc/rc.d/fsck b/etc/rc.d/fsck new file mode 100755 index 0000000..ddd4302 --- /dev/null +++ b/etc/rc.d/fsck @@ -0,0 +1,68 @@ +#!/bin/sh +# +# $NetBSD$ +# + +# PROVIDE: fsck +# REQUIRE: localswap + +. /etc/rc.subr + +name="fsck" +start_cmd="fsck_start" +stop_cmd=":" + +stop_boot() +{ + # Terminate the process (which may include the parent /etc/rc) + # if booting directly to multiuser mode. + # + if [ "$autoboot" = yes ]; then + kill -TERM $$ + fi + exit 1 +} + +fsck_start() +{ + if [ -e /fastboot ]; then + echo "Fast boot: skipping disk checks." + elif [ "$autoboot" = yes ]; then + # During fsck ignore SIGQUIT + trap : 3 + + echo "Automatic boot in progress: starting file system checks." + fsck -p + case $? in + 0) + ;; + 2) + stop_boot + ;; + 4) + echo "Rebooting..." + reboot + echo "Reboot failed; help!" + stop_boot + ;; + 8) + echo "Automatic file system check failed; help!" + stop_boot + ;; + 12) + echo "Boot interrupted." + stop_boot + ;; + 130) + stop_boot + ;; + *) + echo "Unknown error; help!" + stop_boot + ;; + esac + fi +} + +load_rc_config $name +run_rc_command "$1" |