#!/bin/sh # # $FreeBSD$ # # PROVIDE: dumpon # BEFORE: disks # KEYWORD: nojail . /etc/rc.subr name="dumpon" desc="Dump kernel corefiles from swap to disk" start_cmd="dumpon_start" stop_cmd="dumpon_stop" dumpon_try() { local flags flags=${dumpon_flags} if [ -n "${dumppubkey}" ]; then warn "The dumppubkey variable is deprecated. Use dumpon_flags." flags="${flags} -k ${dumppubkey}" fi /sbin/dumpon ${flags} "${1}" if [ $? -eq 0 ]; then # Make a symlink in devfs for savecore ln -fs "${1}" /dev/dumpdev return 0 fi warn "unable to specify $1 as a dump device" return 1 } dumpon_start() { # Enable dumpdev so that savecore can see it. Enable it # early so a crash early in the boot process can be caught. # case ${dumpdev} in [Nn][Oo] | '') ;; [Aa][Uu][Tt][Oo]) dev=$(/bin/kenv -q dumpdev) if [ -n "${dev}" ] ; then dumpon_try "${dev}" return $? fi while read dev mp type more ; do [ "${type}" = "swap" ] || continue [ -c "${dev}" ] || continue dumpon_try "${dev}" 2>/dev/null && return 0 done </etc/fstab echo "No suitable dump device was found." 1>&2 return 1 ;; *) dumpon_try "${dumpdev}" ;; esac } dumpon_stop() { case ${dumpdev} in [Nn][Oo] | '') ;; *) rm -f /dev/dumpdev /sbin/dumpon -v off ;; esac } load_rc_config $name run_rc_command "$1" |