fsck_root revision 1.2
11.1Sjoerg#!/bin/sh 21.1Sjoerg# 31.2Sapb# $NetBSD: fsck_root,v 1.2 2009/04/28 13:08:51 apb Exp $ 41.1Sjoerg# 51.1Sjoerg 61.1Sjoerg# PROVIDE: fsck_root 71.1Sjoerg 81.1Sjoerg$_rc_subr_loaded . /etc/rc.subr 91.1Sjoerg 101.1Sjoergname="fsck_root" 111.1Sjoergstart_cmd="fsck_root_start" 121.1Sjoergstop_cmd=":" 131.2Sapbfstab_file=/etc/fstab 141.1Sjoerg 151.1Sjoergfsck_root_start() 161.1Sjoerg{ 171.1Sjoerg if [ -e /fastboot ]; then 181.1Sjoerg echo "Fast boot: skipping disk checks." 191.1Sjoerg return 201.1Sjoerg fi 211.1Sjoerg trap : 2 # Ignore SIGINT, SIGQUIT, so we 221.1Sjoerg trap : 3 # enter single-user mode on failure. 231.1Sjoerg 241.2Sapb # Do nothing if root file system has fs_passno=0 in /etc/fstab. 251.2Sapb while read fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passno 261.2Sapb do 271.2Sapb case "${fs_spec}:${fs_file}:${fs_passno}" in 281.2Sapb \#*|'':*) 291.2Sapb continue # skip comment or blank line 301.2Sapb ;; 311.2Sapb *:/:0) 321.2Sapb echo "Not checking /: fs_passno = 0 in ${fstab_file}" 331.2Sapb return 341.2Sapb ;; 351.2Sapb *:/:*) break 361.2Sapb ;; 371.2Sapb esac 381.2Sapb done <"${fstab_file}" 391.2Sapb 401.1Sjoerg echo "Starting root file system check:" 411.1Sjoerg fsck $fsck_flags / 421.1Sjoerg local fsck_error="$?" 431.1Sjoerg case $fsck_error in 441.1Sjoerg 0) # OK 451.1Sjoerg return 461.1Sjoerg ;; 471.1Sjoerg 2) # Needs re-run, still fs errors 481.1Sjoerg echo "file system still has errors; re-run fsck manually!" 491.1Sjoerg ;; 501.1Sjoerg 4) # Root modified 511.1Sjoerg echo "Root filesystem was modified, rebooting ..." 521.1Sjoerg reboot 531.1Sjoerg echo "Reboot failed; help!" 541.1Sjoerg ;; 551.1Sjoerg 8) # Check failed 561.1Sjoerg echo "Automatic file system check failed; help!" 571.1Sjoerg ;; 581.1Sjoerg 12) # Got signal 591.1Sjoerg echo "Boot interrupted." 601.1Sjoerg ;; 611.1Sjoerg *) 621.1Sjoerg echo "Unknown error $fsck_error; help!" 631.1Sjoerg ;; 641.1Sjoerg esac 651.1Sjoerg stop_boot 661.1Sjoerg} 671.1Sjoerg 681.1Sjoergload_rc_config $name 691.1Sjoergrun_rc_command "$1" 70