1 1.1 joerg #!/bin/sh 2 1.1 joerg # 3 1.6 apb # $NetBSD: fsck_root,v 1.6 2011/09/20 12:13:21 apb 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.2 apb fstab_file=/etc/fstab 14 1.1 joerg 15 1.1 joerg fsck_root_start() 16 1.1 joerg { 17 1.1 joerg if [ -e /fastboot ]; then 18 1.1 joerg echo "Fast boot: skipping disk checks." 19 1.1 joerg return 20 1.1 joerg fi 21 1.1 joerg trap : 2 # Ignore SIGINT, SIGQUIT, so we 22 1.1 joerg trap : 3 # enter single-user mode on failure. 23 1.1 joerg 24 1.6 apb # Do nothing if root file system has fs_passno=0 in /etc/fstab, 25 1.6 apb # or if root file system is not mentioned in /etc/fstab, or if 26 1.6 apb # root file system seems to be a network mount. 27 1.6 apb root_in_fstab=false 28 1.2 apb while read fs_spec fs_file fs_vfstype fs_mntops fs_freq fs_passno 29 1.2 apb do 30 1.6 apb # skip comment or blank line 31 1.6 apb case "${fs_spec}" in 32 1.6 apb \#*|'') continue ;; 33 1.6 apb esac 34 1.6 apb 35 1.6 apb # fs_freq and fs_passno default to 0 if not specified 36 1.6 apb : ${fs_freq:=0} ${fs_passno:=0} 37 1.6 apb 38 1.6 apb case "${fs_file},${fs_passno}" in 39 1.6 apb /,0) 40 1.2 apb echo "Not checking /: fs_passno = 0 in ${fstab_file}" 41 1.2 apb return 42 1.2 apb ;; 43 1.6 apb /,*) 44 1.6 apb root_in_fstab=true 45 1.6 apb case "${fs_spec}" in 46 1.3 christos *:*) 47 1.6 apb echo "Not checking /: network mount" 48 1.3 christos return 49 1.3 christos ;; 50 1.3 christos esac 51 1.2 apb ;; 52 1.2 apb esac 53 1.4 mrg done < "${fstab_file}" 54 1.6 apb 55 1.6 apb if $root_in_fstab; then 56 1.6 apb echo "Starting root file system check:" 57 1.6 apb fsck $fsck_flags / 58 1.6 apb handle_fsck_error "$?" 59 1.6 apb return 60 1.6 apb else 61 1.6 apb echo "Not checking /: not listed in ${fstab_file}" 62 1.6 apb fi 63 1.1 joerg } 64 1.1 joerg 65 1.1 joerg load_rc_config $name 66 1.1 joerg run_rc_command "$1" 67