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