fsck revision 98184
178344Sobrien#!/bin/sh 278344Sobrien# 398184Sgordon# $NetBSD: fsck,v 1.2 2001/06/18 06:42:35 lukem Exp $ 498184Sgordon# $FreeBSD: head/etc/rc.d/fsck 98184 2002-06-13 22:14:37Z gordon $ 578344Sobrien# 678344Sobrien 778344Sobrien# PROVIDE: fsck 878344Sobrien# REQUIRE: localswap 998184Sgordon# 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} 2778344Sobrien 2878344Sobrienfsck_start() 2978344Sobrien{ 3098184Sgordon if [ "$autoboot" = no ]; then 3178344Sobrien echo "Fast boot: skipping disk checks." 3278344Sobrien elif [ "$autoboot" = yes ]; then 3378344Sobrien # During fsck ignore SIGQUIT 3478344Sobrien trap : 3 3578344Sobrien 3698184Sgordon echo "Starting file system checks:" 3798184Sgordon case `${CMD_OSTYPE}` in 3898184Sgordon FreeBSD) 3998184Sgordon if checkyesno background_fsck; then 4098184Sgordon fsck -F -p 4198184Sgordon else 4298184Sgordon fsck -p 4398184Sgordon fi 4498184Sgordon ;; 4598184Sgordon NetBSD) 4698184Sgordon fsck -p 4798184Sgordon ;; 4898184Sgordon esac 4998184Sgordon 5078344Sobrien case $? in 5178344Sobrien 0) 5278344Sobrien ;; 5378344Sobrien 2) 5478344Sobrien stop_boot 5578344Sobrien ;; 5678344Sobrien 4) 5778344Sobrien echo "Rebooting..." 5878344Sobrien reboot 5978344Sobrien echo "Reboot failed; help!" 6078344Sobrien stop_boot 6178344Sobrien ;; 6278344Sobrien 8) 6398184Sgordon case `${CMD_OSTYPE}` in 6498184Sgordon FreeBSD) 6598184Sgordon if checkyesno fsck_y_enable; then 6698184Sgordon echo "File system preen failed, trying fsck -y." 6798184Sgordon fsck -y 6898184Sgordon case $? in 6998184Sgordon 0) 7098184Sgordon ;; 7198184Sgordon *) 7298184Sgordon echo "Automatic file system check failed; help!" 7398184Sgordon stop_boot 7498184Sgordon ;; 7598184Sgordon esac 7698184Sgordon else 7798184Sgordon echo "Automatic file system check failed; help!" 7898184Sgordon stop_boot 7998184Sgordon fi 8098184Sgordon ;; 8198184Sgordon NetBSD) 8278344Sobrien echo "Automatic file system check failed; help!" 8378344Sobrien stop_boot 8478344Sobrien ;; 8598184Sgordon esac 8698184Sgordon ;; 8778344Sobrien 12) 8878344Sobrien echo "Boot interrupted." 8978344Sobrien stop_boot 9078344Sobrien ;; 9178344Sobrien 130) 9278344Sobrien stop_boot 9378344Sobrien ;; 9478344Sobrien *) 9578344Sobrien echo "Unknown error; help!" 9678344Sobrien stop_boot 9778344Sobrien ;; 9878344Sobrien esac 9978344Sobrien fi 10078344Sobrien} 10178344Sobrien 10278344Sobrienload_rc_config $name 10378344Sobrienrun_rc_command "$1" 104