]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - etc/rc.d/dumpon
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / etc / rc.d / dumpon
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: dumpon
7 # BEFORE: disks savecore initrandom
8 # KEYWORD: nojail
9
10 . /etc/rc.subr
11
12 name="dumpon"
13 start_cmd="dumpon_start"
14 stop_cmd="dumpon_stop"
15
16 dumpon_try()
17 {
18         if /sbin/dumpon "${1}" ; then
19                 # Make a symlink in devfs for savecore
20                 ln -fs "${1}" /dev/dumpdev
21                 return 0
22         fi
23         warn "unable to specify $1 as a dump device"
24         return 1
25 }
26
27 dumpon_start()
28 {
29         # Enable dumpdev so that savecore can see it. Enable it
30         # early so a crash early in the boot process can be caught.
31         #
32         case ${dumpdev} in
33         [Nn][Oo] | '')
34                 ;;
35         [Aa][Uu][Tt][Oo])
36                 dev=$(/bin/kenv -q dumpdev)
37                 if [ -n "${dev}" ] ; then
38                         dumpon_try "${dev}"
39                         return $?
40                 fi
41                 while read dev mp type more ; do
42                         [ "${type}" = "swap" ] || continue
43                         [ -c "${dev}" ] || continue
44                         dumpon_try "${dev}" 2>/dev/null && return 0
45                 done </etc/fstab
46                 echo "No suitable dump device was found." 1>&2
47                 return 1
48                 ;;
49         *)
50                 dumpon_try "${dumpdev}"
51                 ;;
52         esac
53 }
54
55 dumpon_stop()
56 {
57         case ${dumpdev} in
58         [Nn][Oo] | '')
59                 ;;
60         *)
61                 rm -f /dev/dumpdev
62                 /sbin/dumpon -v off
63                 ;;
64         esac
65 }
66
67 load_rc_config $name
68 run_rc_command "$1"