]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - etc/rc.d/fsck
This commit was generated by cvs2svn to compensate for changes in r165670,
[FreeBSD/FreeBSD.git] / etc / rc.d / fsck
1 #!/bin/sh
2 #
3 # $NetBSD: fsck,v 1.2 2001/06/18 06:42:35 lukem Exp $
4 # $FreeBSD$
5 #
6
7 # PROVIDE: fsck
8 # REQUIRE: localswap
9 # KEYWORD: nojail
10
11 . /etc/rc.subr
12
13 name="fsck"
14 start_cmd="fsck_start"
15 stop_cmd=":"
16
17 stop_boot()
18 {
19         #       Terminate the process (which may include the parent /etc/rc)
20         #       if booting directly to multiuser mode.
21         #
22         if [ "$autoboot" = yes ]; then
23                 kill -TERM $$
24         fi
25         exit 1
26 }
27
28 fsck_start()
29 {
30         if [ "$autoboot" = no ]; then
31                 echo "Fast boot: skipping disk checks."
32         elif [ ! -r /etc/fstab ]; then
33                 echo "Warning! No /etc/fstab: skipping disk checks."
34         elif [ "$autoboot" = yes ]; then
35                                         # During fsck ignore SIGQUIT
36                 trap : 3
37
38                 echo "Starting file system checks:"
39                 if checkyesno background_fsck; then
40                         fsck -F -p
41                 else
42                         fsck -p
43                 fi
44
45                 case $? in
46                 0)
47                         ;;
48                 2)
49                         stop_boot
50                         ;;
51                 4)
52                         echo "Rebooting..."
53                         reboot
54                         echo "Reboot failed; help!"
55                         stop_boot
56                         ;;
57                 8)
58                         if checkyesno fsck_y_enable; then
59                                 echo "File system preen failed, trying fsck -y."
60                                 fsck -y
61                                 case $? in
62                                 0)
63                                         ;;
64                                 *)
65                                 echo "Automatic file system check failed; help!"
66                                         stop_boot
67                                         ;;
68                                 esac
69                         else
70                                 echo "Automatic file system check failed; help!"
71                                 stop_boot
72                         fi
73                         ;;
74                 12)
75                         echo "Boot interrupted."
76                         stop_boot
77                         ;;
78                 130)
79                         stop_boot
80                         ;;
81                 *)
82                         echo "Unknown error; help!"
83                         stop_boot
84                         ;;
85                 esac
86         fi
87 }
88
89 load_rc_config $name
90 run_rc_command "$1"