fsck revision 104980
178344Sobrien#!/bin/sh 278344Sobrien# 378344Sobrien# $NetBSD: fsck,v 1.2 2001/06/18 06:42:35 lukem Exp $ 478344Sobrien# $FreeBSD: head/etc/rc.d/fsck 104980 2002-10-12 10:31:31Z schweikh $ 578344Sobrien# 678344Sobrien 778344Sobrien# PROVIDE: fsck 878344Sobrien# REQUIRE: localswap 978344Sobrien# KEYWORD: FreeBSD NetBSD 1078344Sobrien 1178344Sobrien. /etc/rc.subr 1278344Sobrien 1378344Sobrienname="fsck" 1478344Sobrienstart_cmd="fsck_start" 1578344Sobrienstop_cmd=":" 1678344Sobrien 1778344Sobrienstop_boot() 1878344Sobrien{ 1978344Sobrien # Terminate the process (which may include the parent /etc/rc) 2078344Sobrien # if booting directly to multiuser mode. 2178344Sobrien # 2278344Sobrien if [ "$autoboot" = yes ]; then 2378344Sobrien kill -TERM $$ 2478344Sobrien fi 2578344Sobrien exit 1 2678344Sobrien} 27 28fsck_start() 29{ 30 if [ "$autoboot" = no ]; then 31 echo "Fast boot: skipping disk checks." 32 elif [ "$autoboot" = yes ]; then 33 # During fsck ignore SIGQUIT 34 trap : 3 35 36 echo "Starting file system checks:" 37 case ${OSTYPE} in 38 FreeBSD) 39 if checkyesno background_fsck; then 40 fsck -F -p 41 else 42 fsck -p 43 fi 44 ;; 45 NetBSD) 46 fsck -p 47 ;; 48 esac 49 50 case $? in 51 0) 52 ;; 53 2) 54 stop_boot 55 ;; 56 4) 57 echo "Rebooting..." 58 reboot 59 echo "Reboot failed; help!" 60 stop_boot 61 ;; 62 8) 63 case ${OSTYPE} in 64 FreeBSD) 65 if checkyesno fsck_y_enable; then 66 echo "File system preen failed, trying fsck -y." 67 fsck -y 68 case $? in 69 0) 70 ;; 71 *) 72 echo "Automatic file system check failed; help!" 73 stop_boot 74 ;; 75 esac 76 else 77 echo "Automatic file system check failed; help!" 78 stop_boot 79 fi 80 ;; 81 NetBSD) 82 echo "Automatic file system check failed; help!" 83 stop_boot 84 ;; 85 esac 86 ;; 87 12) 88 echo "Boot interrupted." 89 stop_boot 90 ;; 91 130) 92 stop_boot 93 ;; 94 *) 95 echo "Unknown error; help!" 96 stop_boot 97 ;; 98 esac 99 fi 100} 101 102load_rc_config $name 103run_rc_command "$1" 104