mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
initscripts: add kdump scripts
this is initial kdump and kdump scripts, it looks when run kdump-config load the first time, the kdump kernel can be loaded, and test crash dump with echo c > /proc/sysrq-trigger result in system hang forever, then had to power reset. after power reset, kdump-config load could no longer load the kdump kernel, errors out with: [root@bpfire-3 crash]# kdump-config load cp: cannot stat '/etc/kdump/sysctl.conf': No such file or directory Creating symlink /var/lib/kdump/vmlinuz. ln: failed to create symbolic link '/var/lib/kdump/vmlinuz': No such file or directory Unable to locate kernel hook ... failed! Can't find kernel text map area from kcore Cannot load /boot/vmlinuz-6.15.6-ipfire failed to load kdump kernel ... failed! so kdump is not working properly, but add the kdump scripts anyway, the issue can be investigated later in future. Signed-off-by: Vincent Li <vincent.mc.li@gmail.com>
This commit is contained in:
@@ -97,6 +97,10 @@ etc/rc.d/init.d/loxilb
|
|||||||
etc/rc.d/init.d/xdpdns
|
etc/rc.d/init.d/xdpdns
|
||||||
etc/rc.d/init.d/xdpsni
|
etc/rc.d/init.d/xdpsni
|
||||||
etc/rc.d/init.d/xdpgeoip
|
etc/rc.d/init.d/xdpgeoip
|
||||||
|
etc/rc.d/init.d/kdump-config
|
||||||
|
etc/rc.d/init.d/kdump-init-functions
|
||||||
|
etc/rc.d/init.d/kdump-tools
|
||||||
|
etc/rc.d/init.d/kdump-vars.sh
|
||||||
#etc/rc.d/rc0.d
|
#etc/rc.d/rc0.d
|
||||||
#etc/rc.d/rc0.d/K01imspetor
|
#etc/rc.d/rc0.d/K01imspetor
|
||||||
#etc/rc.d/rc0.d/K01motion
|
#etc/rc.d/rc0.d/K01motion
|
||||||
|
|||||||
1396
src/initscripts/system/kdump-config
Executable file
1396
src/initscripts/system/kdump-config
Executable file
File diff suppressed because it is too large
Load Diff
433
src/initscripts/system/kdump-init-functions
Normal file
433
src/initscripts/system/kdump-init-functions
Normal file
@@ -0,0 +1,433 @@
|
|||||||
|
# /lib/lsb/init-functions for Debian -*- shell-script -*-
|
||||||
|
#
|
||||||
|
#Copyright (c) 2002-08 Chris Lawrence
|
||||||
|
#All rights reserved.
|
||||||
|
#
|
||||||
|
#Redistribution and use in source and binary forms, with or without
|
||||||
|
#modification, are permitted provided that the following conditions
|
||||||
|
#are met:
|
||||||
|
#1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#3. Neither the name of the author nor the names of other contributors
|
||||||
|
# may be used to endorse or promote products derived from this software
|
||||||
|
# without specific prior written permission.
|
||||||
|
#
|
||||||
|
#THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
#IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
#ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
|
||||||
|
#LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
#BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
#OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
|
#EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
start_daemon () {
|
||||||
|
local force nice pidfile exec args OPTIND
|
||||||
|
force=""
|
||||||
|
nice=0
|
||||||
|
pidfile=/dev/null
|
||||||
|
|
||||||
|
OPTIND=1
|
||||||
|
while getopts fn:p: opt ; do
|
||||||
|
case "$opt" in
|
||||||
|
f) force="force";;
|
||||||
|
n) nice="$OPTARG";;
|
||||||
|
p) pidfile="$OPTARG";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
if [ "$1" = '--' ]; then
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec="$1"; shift
|
||||||
|
|
||||||
|
args="--start --nicelevel $nice --quiet --oknodo"
|
||||||
|
if [ "$force" ]; then
|
||||||
|
/sbin/start-stop-daemon $args \
|
||||||
|
--chdir "$PWD" --startas $exec --pidfile /dev/null -- "$@"
|
||||||
|
elif [ $pidfile ]; then
|
||||||
|
/sbin/start-stop-daemon $args \
|
||||||
|
--chdir "$PWD" --exec $exec --oknodo --pidfile "$pidfile" -- "$@"
|
||||||
|
else
|
||||||
|
/sbin/start-stop-daemon $args --chdir "$PWD" --exec $exec -- "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pidofproc () {
|
||||||
|
local pidfile base status specified pid OPTIND
|
||||||
|
pidfile=
|
||||||
|
specified=
|
||||||
|
|
||||||
|
OPTIND=1
|
||||||
|
while getopts p: opt ; do
|
||||||
|
case "$opt" in
|
||||||
|
p) pidfile="$OPTARG"
|
||||||
|
specified="specified"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "$0: invalid arguments" >&2
|
||||||
|
return 4
|
||||||
|
fi
|
||||||
|
|
||||||
|
base=${1##*/}
|
||||||
|
if [ ! "$specified" ]; then
|
||||||
|
pidfile="/var/run/$base.pid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${pidfile:-}" ]; then
|
||||||
|
if [ -e "$pidfile" ]; then
|
||||||
|
if [ -r "$pidfile" ]; then
|
||||||
|
read pid < "$pidfile"
|
||||||
|
if [ -n "${pid:-}" ]; then
|
||||||
|
if $(kill -0 "${pid:-}" 2> /dev/null); then
|
||||||
|
echo "$pid" || true
|
||||||
|
return 0
|
||||||
|
elif ps "${pid:-}" >/dev/null 2>&1; then
|
||||||
|
echo "$pid" || true
|
||||||
|
return 0 # program is running, but not owned by this user
|
||||||
|
else
|
||||||
|
return 1 # program is dead and /var/run pid file exists
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
return 4 # pid file not readable, hence status is unknown.
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# pid file doesn't exist, try to find the pid nevertheless
|
||||||
|
if [ -x /bin/pidof ] && [ ! "$specified" ]; then
|
||||||
|
status="0"
|
||||||
|
/bin/pidof -c -o %PPID -x $1 || status="$?"
|
||||||
|
if [ "$status" = 1 ]; then
|
||||||
|
return 3 # program is not running
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 3 # specified pid file doesn't exist, program probably stopped
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$specified" ]; then
|
||||||
|
return 3 # almost certain it's not running
|
||||||
|
fi
|
||||||
|
return 4 # Unable to determine status
|
||||||
|
}
|
||||||
|
|
||||||
|
# start-stop-daemon uses the same algorithm as "pidofproc" above.
|
||||||
|
killproc () {
|
||||||
|
local pidfile sig status base name_param is_term_sig OPTIND
|
||||||
|
pidfile=
|
||||||
|
name_param=
|
||||||
|
is_term_sig=
|
||||||
|
|
||||||
|
OPTIND=1
|
||||||
|
while getopts p: opt ; do
|
||||||
|
case "$opt" in
|
||||||
|
p) pidfile="$OPTARG";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
base=${1##*/}
|
||||||
|
if [ ! $pidfile ]; then
|
||||||
|
name_param="--name $base --pidfile /var/run/$base.pid"
|
||||||
|
else
|
||||||
|
name_param="--name $base --pidfile $pidfile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sig=$(echo ${2:-} | sed -e 's/^-\(.*\)/\1/')
|
||||||
|
sig=$(echo $sig | sed -e 's/^SIG\(.*\)/\1/')
|
||||||
|
if [ "$sig" = 15 ] || [ "$sig" = TERM ]; then
|
||||||
|
is_term_sig="terminate_signal"
|
||||||
|
fi
|
||||||
|
status=0
|
||||||
|
if [ ! "$is_term_sig" ]; then
|
||||||
|
if [ -n "$sig" ]; then
|
||||||
|
/sbin/start-stop-daemon --stop --signal "$sig" \
|
||||||
|
--quiet $name_param || status="$?"
|
||||||
|
else
|
||||||
|
/sbin/start-stop-daemon --stop \
|
||||||
|
--retry 5 \
|
||||||
|
--quiet $name_param || status="$?"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/sbin/start-stop-daemon --stop --quiet \
|
||||||
|
--oknodo $name_param || status="$?"
|
||||||
|
fi
|
||||||
|
if [ "$status" = 1 ]; then
|
||||||
|
if [ -z "$sig" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 3 # program is not running
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$status" = 0 ] && [ "$is_term_sig" ] && [ "$pidfile" ]; then
|
||||||
|
pidofproc -p "$pidfile" "$1" >/dev/null || rm -f "$pidfile"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Return LSB status
|
||||||
|
status_of_proc () {
|
||||||
|
local pidfile daemon name status OPTIND
|
||||||
|
|
||||||
|
pidfile=
|
||||||
|
OPTIND=1
|
||||||
|
while getopts p: opt ; do
|
||||||
|
case "$opt" in
|
||||||
|
p) pidfile="$OPTARG";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
|
if [ -n "$pidfile" ]; then
|
||||||
|
pidfile="-p $pidfile"
|
||||||
|
fi
|
||||||
|
daemon="$1"
|
||||||
|
name="$2"
|
||||||
|
|
||||||
|
status="0"
|
||||||
|
pidofproc $pidfile $daemon >/dev/null || status="$?"
|
||||||
|
if [ "$status" = 0 ]; then
|
||||||
|
log_success_msg "$name is running"
|
||||||
|
return 0
|
||||||
|
elif [ "$status" = 4 ]; then
|
||||||
|
log_failure_msg "could not access PID file for $name"
|
||||||
|
return $status
|
||||||
|
else
|
||||||
|
log_failure_msg "$name is not running"
|
||||||
|
return $status
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
log_use_fancy_output () {
|
||||||
|
TPUT=/usr/bin/tput
|
||||||
|
EXPR=/usr/bin/expr
|
||||||
|
if [ -t 1 ] &&
|
||||||
|
[ "x${TERM:-}" != "x" ] &&
|
||||||
|
[ "x${TERM:-}" != "xdumb" ] &&
|
||||||
|
[ -x $TPUT ] && [ -x $EXPR ] &&
|
||||||
|
$TPUT hpa 60 >/dev/null 2>&1 &&
|
||||||
|
$TPUT setaf 1 >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
[ -z $FANCYTTY ] && FANCYTTY=1 || true
|
||||||
|
else
|
||||||
|
FANCYTTY=0
|
||||||
|
fi
|
||||||
|
case "$FANCYTTY" in
|
||||||
|
1|Y|yes|true) true;;
|
||||||
|
*) false;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
log_success_msg () {
|
||||||
|
if [ -n "${1:-}" ]; then
|
||||||
|
log_begin_msg $@
|
||||||
|
fi
|
||||||
|
log_end_msg 0
|
||||||
|
}
|
||||||
|
|
||||||
|
log_failure_msg () {
|
||||||
|
if [ -n "${1:-}" ]; then
|
||||||
|
log_begin_msg $@ "..."
|
||||||
|
fi
|
||||||
|
log_end_msg 1 || true
|
||||||
|
}
|
||||||
|
|
||||||
|
log_warning_msg () {
|
||||||
|
if [ -n "${1:-}" ]; then
|
||||||
|
log_begin_msg $@ "..."
|
||||||
|
fi
|
||||||
|
log_end_msg 255 || true
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# NON-LSB HELPER FUNCTIONS
|
||||||
|
#
|
||||||
|
# int get_lsb_header_val (char *scriptpathname, char *key)
|
||||||
|
get_lsb_header_val () {
|
||||||
|
if [ ! -f "$1" ] || [ -z "${2:-}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
LSB_S="### BEGIN INIT INFO"
|
||||||
|
LSB_E="### END INIT INFO"
|
||||||
|
sed -n "/$LSB_S/,/$LSB_E/ s/# $2: \+\(.*\)/\1/p" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# If the currently running init daemon is upstart, return zero; if the
|
||||||
|
# calling init script belongs to a package which also provides a native
|
||||||
|
# upstart job, it should generally exit non-zero in this case.
|
||||||
|
init_is_upstart()
|
||||||
|
{
|
||||||
|
if [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | /bin/grep -q upstart; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# int log_begin_message (char *message)
|
||||||
|
log_begin_msg () {
|
||||||
|
log_begin_msg_pre "$@"
|
||||||
|
if [ -z "${1:-}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo -n "$@" || true
|
||||||
|
log_begin_msg_post "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sample usage:
|
||||||
|
# log_daemon_msg "Starting GNOME Login Manager" "gdm"
|
||||||
|
#
|
||||||
|
# On Debian, would output "Starting GNOME Login Manager: gdm"
|
||||||
|
# On Ubuntu, would output " * Starting GNOME Login Manager..."
|
||||||
|
#
|
||||||
|
# If the second argument is omitted, logging suitable for use with
|
||||||
|
# log_progress_msg() is used:
|
||||||
|
#
|
||||||
|
# log_daemon_msg "Starting remote filesystem services"
|
||||||
|
#
|
||||||
|
# On Debian, would output "Starting remote filesystem services:"
|
||||||
|
# On Ubuntu, would output " * Starting remote filesystem services..."
|
||||||
|
|
||||||
|
log_daemon_msg () {
|
||||||
|
if [ -z "${1:-}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
log_daemon_msg_pre "$@"
|
||||||
|
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
echo -n "$1:" || true
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -n "$1: $2" || true
|
||||||
|
log_daemon_msg_post "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# #319739
|
||||||
|
#
|
||||||
|
# Per policy docs:
|
||||||
|
#
|
||||||
|
# log_daemon_msg "Starting remote file system services"
|
||||||
|
# log_progress_msg "nfsd"; start-stop-daemon --start --quiet nfsd
|
||||||
|
# log_progress_msg "mountd"; start-stop-daemon --start --quiet mountd
|
||||||
|
# log_progress_msg "ugidd"; start-stop-daemon --start --quiet ugidd
|
||||||
|
# log_end_msg 0
|
||||||
|
#
|
||||||
|
# You could also do something fancy with log_end_msg here based on the
|
||||||
|
# return values of start-stop-daemon; this is left as an exercise for
|
||||||
|
# the reader...
|
||||||
|
#
|
||||||
|
# On Ubuntu, one would expect log_progress_msg to be a no-op.
|
||||||
|
log_progress_msg () {
|
||||||
|
if [ -z "${1:-}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo -n " $@" || true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# int log_end_message (int exitstatus)
|
||||||
|
log_end_msg () {
|
||||||
|
# If no arguments were passed, return
|
||||||
|
if [ -z "${1:-}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local retval
|
||||||
|
retval=$1
|
||||||
|
|
||||||
|
log_end_msg_pre "$@"
|
||||||
|
|
||||||
|
# Only do the fancy stuff if we have an appropriate terminal
|
||||||
|
# and if /usr is already mounted
|
||||||
|
if log_use_fancy_output; then
|
||||||
|
RED=$( $TPUT setaf 1)
|
||||||
|
YELLOW=$( $TPUT setaf 3)
|
||||||
|
NORMAL=$( $TPUT op)
|
||||||
|
else
|
||||||
|
RED=''
|
||||||
|
YELLOW=''
|
||||||
|
NORMAL=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $1 -eq 0 ]; then
|
||||||
|
echo "." || true
|
||||||
|
elif [ $1 -eq 255 ]; then
|
||||||
|
/bin/echo -e " ${YELLOW}(warning).${NORMAL}" || true
|
||||||
|
else
|
||||||
|
/bin/echo -e " ${RED}failed!${NORMAL}" || true
|
||||||
|
fi
|
||||||
|
log_end_msg_post "$@"
|
||||||
|
return $retval
|
||||||
|
}
|
||||||
|
|
||||||
|
log_action_msg () {
|
||||||
|
log_action_msg_pre "$@"
|
||||||
|
echo "$@." || true
|
||||||
|
log_action_msg_post "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_action_begin_msg () {
|
||||||
|
log_action_begin_msg_pre "$@"
|
||||||
|
echo -n "$@..." || true
|
||||||
|
log_action_begin_msg_post "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_action_cont_msg () {
|
||||||
|
echo -n "$@..." || true
|
||||||
|
}
|
||||||
|
|
||||||
|
log_action_end_msg () {
|
||||||
|
local end
|
||||||
|
log_action_end_msg_pre "$@"
|
||||||
|
if [ -z "${2:-}" ]; then
|
||||||
|
end="."
|
||||||
|
else
|
||||||
|
end=" ($2)."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $1 -eq 0 ]; then
|
||||||
|
echo "done${end}" || true
|
||||||
|
else
|
||||||
|
if log_use_fancy_output; then
|
||||||
|
RED=$( $TPUT setaf 1)
|
||||||
|
NORMAL=$( $TPUT op)
|
||||||
|
/bin/echo -e "${RED}failed${end}${NORMAL}" || true
|
||||||
|
else
|
||||||
|
echo "failed${end}" || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
log_action_end_msg_post "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Pre&Post empty function declaration, to be overriden from /lib/lsb/init-functions.d/*
|
||||||
|
log_daemon_msg_pre () { :; }
|
||||||
|
log_daemon_msg_post () { :; }
|
||||||
|
log_begin_msg_pre () { :; }
|
||||||
|
log_begin_msg_post () { :; }
|
||||||
|
log_end_msg_pre () { :; }
|
||||||
|
log_end_msg_post () { :; }
|
||||||
|
log_action_msg_pre () { :; }
|
||||||
|
log_action_msg_post () { :; }
|
||||||
|
log_action_begin_msg_pre () { :; }
|
||||||
|
log_action_begin_msg_post () { :; }
|
||||||
|
log_action_end_msg_pre () { :; }
|
||||||
|
log_action_end_msg_post () { :; }
|
||||||
|
|
||||||
|
# Include hooks from other packages in /lib/lsb/init-functions.d
|
||||||
|
for hook in $(run-parts --lsbsysinit --list /lib/lsb/init-functions.d 2>/dev/null); do
|
||||||
|
[ -r $hook ] && . $hook || true
|
||||||
|
done
|
||||||
|
|
||||||
|
FANCYTTY=
|
||||||
|
[ -e /etc/lsb-base-logging.sh ] && . /etc/lsb-base-logging.sh || true
|
||||||
103
src/initscripts/system/kdump-tools
Normal file
103
src/initscripts/system/kdump-tools
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
# kdump-tools configuration
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# USE_KDUMP - controls kdump will be configured
|
||||||
|
# 0 - kdump kernel will not be loaded
|
||||||
|
# 1 - kdump kernel will be loaded and kdump is configured
|
||||||
|
#
|
||||||
|
USE_KDUMP=1
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Kdump Kernel:
|
||||||
|
# KDUMP_KERNEL - A full pathname to a kdump kernel.
|
||||||
|
# KDUMP_INITRD - A full pathname to the kdump initrd (if used).
|
||||||
|
# If these are not set, kdump-config will try to use the current kernel
|
||||||
|
# and initrd if it is relocatable. Otherwise, you will need to specify
|
||||||
|
# these manually.
|
||||||
|
#KDUMP_KERNEL=/var/lib/kdump/vmlinuz
|
||||||
|
#KDUMP_INITRD=/var/lib/kdump/initrd.img
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# vmcore Handling:
|
||||||
|
# KDUMP_COREDIR - local path to save the vmcore to.
|
||||||
|
# KDUMP_FAIL_CMD - This variable can be used to cause a reboot or
|
||||||
|
# start a shell if saving the vmcore fails. If not set, "reboot -f"
|
||||||
|
# is the default.
|
||||||
|
# Example - start a shell if the vmcore copy fails:
|
||||||
|
# KDUMP_FAIL_CMD="echo 'makedumpfile FAILED.'; /bin/bash; reboot -f"
|
||||||
|
# KDUMP_DUMP_DMESG - This variable controls if the dmesg buffer is dumped.
|
||||||
|
# If unset or set to 1, the dmesg buffer is dumped. If set to 0, the dmesg
|
||||||
|
# buffer is not dumped.
|
||||||
|
# KDUMP_NUM_DUMPS - This variable controls how many dump files are kept on
|
||||||
|
# the machine to prevent running out of disk space. If set to 0 or unset,
|
||||||
|
# the variable is ignored and no dump files are automatically purged.
|
||||||
|
# KDUMP_COMPRESSION - Compress the dumpfile. No compression is used by default.
|
||||||
|
# Supported compressions: bzip2, gzip, lz4, xz
|
||||||
|
KDUMP_COREDIR="/var/crash"
|
||||||
|
#KDUMP_FAIL_CMD="reboot -f"
|
||||||
|
#KDUMP_DUMP_DMESG=
|
||||||
|
#KDUMP_NUM_DUMPS=
|
||||||
|
#KDUMP_COMPRESSION=
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Makedumpfile options:
|
||||||
|
# MAKEDUMP_ARGS - extra arguments passed to makedumpfile (8). The default,
|
||||||
|
# if unset, is to pass '-c -d 31' telling makedumpfile to use compression
|
||||||
|
# and reduce the corefile to in-use kernel pages only.
|
||||||
|
#MAKEDUMP_ARGS="-c -d 31"
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Kexec/Kdump args
|
||||||
|
# KDUMP_KEXEC_ARGS - Additional arguments to the kexec command used to load
|
||||||
|
# the kdump kernel
|
||||||
|
# Example - Use this option on x86 systems with PAE and more than
|
||||||
|
# 4 gig of memory:
|
||||||
|
# KDUMP_KEXEC_ARGS="--elf64-core-headers"
|
||||||
|
# KDUMP_CMDLINE - The default is to use the contents of /proc/cmdline.
|
||||||
|
# Set this variable to override /proc/cmdline.
|
||||||
|
# KDUMP_CMDLINE_APPEND - Additional arguments to append to the command line
|
||||||
|
# for the kdump kernel. If unset, it defaults to
|
||||||
|
# "reset_devices systemd.unit=kdump-tools-dump.service nr_cpus=1 irqpoll nousb"
|
||||||
|
#KDUMP_KEXEC_ARGS=""
|
||||||
|
#KDUMP_CMDLINE=""
|
||||||
|
#KDUMP_CMDLINE_APPEND="reset_devices systemd.unit=kdump-tools-dump.service nr_cpus=1 irqpoll nousb"
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Architecture specific Overrides:
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Remote dump facilities:
|
||||||
|
# HOSTTAG - Select if hostname of IP address will be used as a prefix to the
|
||||||
|
# timestamped directory when sending files to the remote server.
|
||||||
|
# 'ip' is the default.
|
||||||
|
#HOSTTAG="hostname|[ip]"
|
||||||
|
|
||||||
|
# NFS - Hostname and mount point of the NFS server configured to receive
|
||||||
|
# the crash dump. The syntax must be {HOSTNAME}:{MOUNTPOINT}
|
||||||
|
# (e.g. remote:/var/crash)
|
||||||
|
# NFS_TIMEO - Timeout before NFS retries a request. See man nfs(5) for details.
|
||||||
|
# NFS_RETRANS - Number of times NFS client retries a request. See man nfs(5) for details.
|
||||||
|
#NFS="<nfs mount>"
|
||||||
|
#NFS_TIMEO="600"
|
||||||
|
#NFS_RETRANS="3"
|
||||||
|
|
||||||
|
# FTP - Hostname and path of the FTP server configured to receive the crash dump.
|
||||||
|
# The syntax is {HOSTNAME}[:{PATH}] with PATH defaulting to /.
|
||||||
|
# FTP_USER - FTP username. A anonomous upload will be used if not set.
|
||||||
|
# FTP_PASSWORD - password for the FTP user
|
||||||
|
# FTP_PORT=21 - FTP port. Port 21 will be used by default.
|
||||||
|
#FTP="<server>:<path>"
|
||||||
|
#FTP_USER=""
|
||||||
|
#FTP_PASSWORD=""
|
||||||
|
#FTP_PORT=21
|
||||||
|
|
||||||
|
# SSH - username and hostname of the remote server that will receive the dump
|
||||||
|
# and dmesg files.
|
||||||
|
# SSH_KEY - Full path of the ssh private key to be used to login to the remote
|
||||||
|
# server. use kdump-config propagate to send the public key to the
|
||||||
|
# remote server
|
||||||
|
#SSH="<user at server>"
|
||||||
|
#SSH_KEY="<path>"
|
||||||
53
src/initscripts/system/kdump-vars.sh
Normal file
53
src/initscripts/system/kdump-vars.sh
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#
|
||||||
|
# Set rcS vars
|
||||||
|
#
|
||||||
|
|
||||||
|
# Because /etc/default/rcS isn't a conffile, it's never updated
|
||||||
|
# automatically. So that an empty or outdated file missing newer
|
||||||
|
# options works correctly, set the default values here.
|
||||||
|
TMPTIME=0
|
||||||
|
SULOGIN=no
|
||||||
|
DELAYLOGIN=no
|
||||||
|
UTC=yes
|
||||||
|
VERBOSE=no
|
||||||
|
FSCKFIX=no
|
||||||
|
|
||||||
|
# Source conffile
|
||||||
|
if [ -f /etc/default/rcS ]; then
|
||||||
|
. /etc/default/rcS
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Unset old unused options
|
||||||
|
unset EDITMOTD
|
||||||
|
unset RAMRUN
|
||||||
|
unset RAMLOCK
|
||||||
|
# Don't unset RAMSHM and RAMTMP for now.
|
||||||
|
|
||||||
|
# Parse kernel command line
|
||||||
|
if [ -r /proc/cmdline ]; then
|
||||||
|
for ARG in $(cat /proc/cmdline); do
|
||||||
|
case $ARG in
|
||||||
|
|
||||||
|
# check for bootoption 'noswap' and do not activate swap
|
||||||
|
# partitions/files when it is set.
|
||||||
|
noswap)
|
||||||
|
NOSWAP=yes
|
||||||
|
;;
|
||||||
|
|
||||||
|
# Accept the same 'quiet' option as the kernel, but only
|
||||||
|
# during boot and shutdown. Only use this rule when the
|
||||||
|
# variables set by init.d/rc is present.
|
||||||
|
quiet)
|
||||||
|
if [ "$RUNLEVEL" ] && [ "$PREVLEVEL" ] ; then
|
||||||
|
VERBOSE="no"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# But allow both rcS and the kernel options 'quiet' to be overrided
|
||||||
|
# when INIT_VERBOSE=yes is used as well.
|
||||||
|
if [ "$INIT_VERBOSE" ] ; then
|
||||||
|
VERBOSE="$INIT_VERBOSE"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user