import CS kexec-tools-2.0.29-5.el9
This commit is contained in:
parent
4895d8186b
commit
9676235850
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,3 +1,3 @@
|
||||
SOURCES/eppic-e8844d3.tar.gz
|
||||
SOURCES/kexec-tools-2.0.27.tar.xz
|
||||
SOURCES/makedumpfile-1.7.4.tar.gz
|
||||
SOURCES/kexec-tools-2.0.29.tar.xz
|
||||
SOURCES/makedumpfile-1.7.6.tar.gz
|
||||
|
@ -1,3 +1,3 @@
|
||||
80ac3f5e77d3c79883edadf14428734db4720009 SOURCES/eppic-e8844d3.tar.gz
|
||||
ed15f191adee22ab0721ba62af1cae67eb981670 SOURCES/kexec-tools-2.0.27.tar.xz
|
||||
98cae2b1062871905795918c32b6d46ccd115074 SOURCES/makedumpfile-1.7.4.tar.gz
|
||||
b05e53b8f63ca039a06b0f8cb8a175b0f447449e SOURCES/kexec-tools-2.0.29.tar.xz
|
||||
0182de2145780593639b4e0b4a573af0595b8988 SOURCES/makedumpfile-1.7.6.tar.gz
|
||||
|
4
SOURCES/99-kdump.conf
Normal file
4
SOURCES/99-kdump.conf
Normal file
@ -0,0 +1,4 @@
|
||||
dracutmodules=''
|
||||
add_dracutmodules=' kdumpbase '
|
||||
omit_dracutmodules=' plymouth resume ifcfg earlykdump '
|
||||
omit_drivers+=' nouveau amdgpu '
|
@ -15,6 +15,8 @@ fi
|
||||
|
||||
KDUMP_PATH="/var/crash"
|
||||
KDUMP_LOG_FILE="/run/initramfs/kexec-dmesg.log"
|
||||
KDUMP_TEST_ID=""
|
||||
KDUMP_TEST_STATUS=""
|
||||
CORE_COLLECTOR=""
|
||||
DEFAULT_CORE_COLLECTOR="makedumpfile -l --message-level 7 -d 31"
|
||||
DMESG_COLLECTOR="/sbin/vmcore-dmesg"
|
||||
@ -141,7 +143,12 @@ dump_fs()
|
||||
;;
|
||||
esac
|
||||
|
||||
_dump_fs_path=$(echo "$1/$KDUMP_PATH/$HOST_IP-$DATEDIR/" | tr -s /)
|
||||
if [ -z "$KDUMP_TEST_ID" ]; then
|
||||
_dump_fs_path=$(echo "$1/$KDUMP_PATH/$HOST_IP-$DATEDIR/" | tr -s /)
|
||||
else
|
||||
_dump_fs_path=$(echo "$1/$KDUMP_PATH/" | tr -s /)
|
||||
fi
|
||||
|
||||
dinfo "saving to $_dump_fs_path"
|
||||
|
||||
# Only remount to read-write mode if the dump target is mounted read-only.
|
||||
@ -388,7 +395,12 @@ dump_ssh()
|
||||
{
|
||||
_ret=0
|
||||
_ssh_opt="-i $1 -o BatchMode=yes -o StrictHostKeyChecking=yes"
|
||||
_ssh_dir="$KDUMP_PATH/$HOST_IP-$DATEDIR"
|
||||
if [ -z "$KDUMP_TEST_ID" ]; then
|
||||
_ssh_dir="$KDUMP_PATH/$HOST_IP-$DATEDIR"
|
||||
else
|
||||
_ssh_dir="$KDUMP_PATH"
|
||||
fi
|
||||
|
||||
if is_ipv6_address "$2"; then
|
||||
_scp_address=${2%@*}@"[${2#*@}]"
|
||||
else
|
||||
@ -572,6 +584,48 @@ fence_kdump_notify()
|
||||
fi
|
||||
}
|
||||
|
||||
kdump_test_set_status() {
|
||||
_status="$1"
|
||||
|
||||
[ -n "$KDUMP_TEST_STATUS" ] || return
|
||||
|
||||
case "$_status" in
|
||||
success|fail) ;;
|
||||
*)
|
||||
derror "Unknown test status $_status"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if is_ssh_dump_target; then
|
||||
_ssh_opts="-i $SSH_KEY_LOCATION -o BatchMode=yes -o StrictHostKeyChecking=yes"
|
||||
_ssh_host=$(echo "$DUMP_INSTRUCTION" | awk '{print $3}')
|
||||
|
||||
ssh -q $_ssh_opts "$_ssh_host" "mkdir -p ${KDUMP_TEST_STATUS%/*}" \
|
||||
|| return 1
|
||||
ssh -q $_ssh_opts "$_ssh_host" "echo $_status kdump_test_id=$KDUMP_TEST_ID > $KDUMP_TEST_STATUS" \
|
||||
|| return 1
|
||||
else
|
||||
_target=$(echo "$DUMP_INSTRUCTION" | awk '{print $2}')
|
||||
|
||||
mkdir -p "$_target/$KDUMP_PATH" || return 1
|
||||
echo "$_status kdump_test_id=$KDUMP_TEST_ID" > "$_target/$KDUMP_TEST_STATUS"
|
||||
sync -f "$_target/$KDUMP_TEST_STATUS"
|
||||
fi
|
||||
}
|
||||
|
||||
kdump_test_init() {
|
||||
is_raw_dump_target && return
|
||||
|
||||
KDUMP_TEST_ID=$(getarg kdump_test_id=)
|
||||
[ -z "$KDUMP_TEST_ID" ] && return
|
||||
|
||||
KDUMP_PATH="$KDUMP_PATH/kdump-test-$KDUMP_TEST_ID"
|
||||
KDUMP_TEST_STATUS="$KDUMP_PATH/vmcore-creation.status"
|
||||
|
||||
kdump_test_set_status 'fail'
|
||||
}
|
||||
|
||||
if [ "$1" = "--error-handler" ]; then
|
||||
get_kdump_confs
|
||||
do_failure_action
|
||||
@ -597,6 +651,7 @@ if [ -z "$DUMP_INSTRUCTION" ]; then
|
||||
DUMP_INSTRUCTION="dump_fs $NEWROOT"
|
||||
fi
|
||||
|
||||
kdump_test_init
|
||||
if ! do_kdump_pre; then
|
||||
derror "kdump_pre script exited with non-zero status!"
|
||||
do_final_action
|
||||
@ -615,4 +670,5 @@ if [ $DUMP_RETVAL -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
kdump_test_set_status "success"
|
||||
do_final_action
|
||||
|
@ -319,7 +319,27 @@ Advanced Setups & Failure action:
|
||||
Kdump and fadump exhibit similar behavior in terms of setup & failure action.
|
||||
For fadump advanced setup related information see section "Advanced Setups" in
|
||||
"kexec-kdump-howto.txt" document. Refer to "Failure action" section in "kexec-
|
||||
kdump-howto.txt" document for fadump failure action related information.
|
||||
kdump-howto.txt" document for fadump failure action related information. Note
|
||||
that the below options from /etc/sysconfig/kdump have no relevance to fadump
|
||||
owing to the way it operates:
|
||||
|
||||
-KDUMP_BOOTDIR
|
||||
-KDUMP_IMG
|
||||
-KDUMP_IMG_EXT
|
||||
-KEXEC_ARGS
|
||||
-KDUMP_KERNELVER
|
||||
-KDUMP_COMMANDLINE
|
||||
-KDUMP_COMMANDLINE_REMOVE
|
||||
-KDUMP_COMMANDLINE_APPEND
|
||||
|
||||
Passing additional parameters to fadump capture kerenl
|
||||
|
||||
-FADUMP_COMMANDLINE_APPEND
|
||||
|
||||
If a powerpc system supports passing additional parameters, it would have the
|
||||
sysfs node '/sys/kernel/fadump/bootargs_append'. FADUMP_COMMANDLINE_APPEND
|
||||
allows us to append arguments to fadump capture kernel, further to parameters
|
||||
passed via the bootloader.
|
||||
|
||||
Compression and filtering
|
||||
|
||||
@ -331,11 +351,7 @@ Notes on rootfs mount:
|
||||
Dracut is designed to mount rootfs by default. If rootfs mounting fails it
|
||||
will refuse to go on. So fadump leaves rootfs mounting to dracut currently.
|
||||
We make the assumtion that proper root= cmdline is being passed to dracut
|
||||
initramfs for the time being. If you need modify "KDUMP_COMMANDLINE=" in
|
||||
/etc/sysconfig/kdump, you will need to make sure that appropriate root=
|
||||
options are copied from /proc/cmdline. In general it is best to append
|
||||
command line options using "KDUMP_COMMANDLINE_APPEND=" instead of replacing
|
||||
the original command line completely.
|
||||
initramfs for the time being.
|
||||
|
||||
How to disable FADump:
|
||||
|
||||
|
@ -101,15 +101,14 @@ get_fs_type_from_target()
|
||||
|
||||
get_mntpoint_from_target()
|
||||
{
|
||||
local SOURCE TARGET
|
||||
findmnt -k --pairs -o SOURCE,TARGET "$1" | while read line; do
|
||||
eval "$line"
|
||||
# omit sources that are bind mounts i.e. they contain a [/path/to/subpath].
|
||||
if [[ ! "$SOURCE" =~ \[ ]]; then
|
||||
echo $TARGET
|
||||
break
|
||||
fi
|
||||
done
|
||||
local _mntpoint
|
||||
# get the first TARGET when SOURCE doesn't end with ].
|
||||
# In most cases, a SOURCE ends with ] when fsroot or subvol exists.
|
||||
_mntpoint=$(get_mount_info TARGET,SOURCE source "$1" | grep -v "\]$" | awk 'NR==1 { print $1 }')
|
||||
|
||||
# fallback to the old way when _mntpoint is empty.
|
||||
[[ -n "$_mntpoint" ]] || _mntpoint=$(get_mount_info TARGET source "$1" -f )
|
||||
echo $_mntpoint
|
||||
}
|
||||
|
||||
is_ssh_dump_target()
|
||||
@ -156,9 +155,14 @@ is_nfs_dump_target()
|
||||
return 1
|
||||
}
|
||||
|
||||
fs_dump_target()
|
||||
{
|
||||
kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|virtiofs"
|
||||
}
|
||||
|
||||
is_fs_dump_target()
|
||||
{
|
||||
[ -n "$(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|virtiofs")" ]
|
||||
[ -n "$(fs_dump_target)" ]
|
||||
}
|
||||
|
||||
is_lvm2_thinp_device()
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
FADUMP_ENABLED_SYS_NODE="/sys/kernel/fadump/enabled"
|
||||
FADUMP_REGISTER_SYS_NODE="/sys/kernel/fadump/registered"
|
||||
FADUMP_APPEND_ARGS_SYS_NODE="/sys/kernel/fadump/bootargs_append"
|
||||
|
||||
is_uki()
|
||||
{
|
||||
|
@ -2,10 +2,10 @@
|
||||
Description=Crash recovery kernel arming
|
||||
After=network.target network-online.target remote-fs.target basic.target
|
||||
DefaultDependencies=no
|
||||
ConditionKernelCommandLine=crashkernel
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecCondition=/bin/sh -c 'grep -q -e "crashkernel" -e "fadump" /proc/cmdline'
|
||||
ExecStart=/usr/bin/kdumpctl start
|
||||
ExecStop=/usr/bin/kdumpctl stop
|
||||
ExecReload=/usr/bin/kdumpctl reload
|
||||
|
@ -39,6 +39,10 @@ KDUMP_IMG="vmlinuz"
|
||||
#What is the images extension. Relocatable kernels don't have one
|
||||
KDUMP_IMG_EXT=""
|
||||
|
||||
# Enable vmcore creation notification by default, disable by setting
|
||||
# VMCORE_CREATION_NOTIFICATION=""
|
||||
VMCORE_CREATION_NOTIFICATION="yes"
|
||||
|
||||
# Logging is controlled by following variables in the first kernel:
|
||||
# - @var KDUMP_STDLOGLVL - logging level to standard error (console output)
|
||||
# - @var KDUMP_SYSLOGLVL - logging level to syslog (by logger command)
|
||||
|
@ -39,6 +39,10 @@ KDUMP_IMG="vmlinuz"
|
||||
#What is the images extension. Relocatable kernels don't have one
|
||||
KDUMP_IMG_EXT=""
|
||||
|
||||
# Enable vmcore creation notification by default, disable by setting
|
||||
# VMCORE_CREATION_NOTIFICATION=""
|
||||
VMCORE_CREATION_NOTIFICATION="yes"
|
||||
|
||||
#Specify the action after failure
|
||||
|
||||
# Logging is controlled by following variables in the first kernel:
|
||||
|
@ -23,6 +23,10 @@ KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swio
|
||||
# after processed by KDUMP_COMMANDLINE_REMOVE
|
||||
KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0"
|
||||
|
||||
# This variable lets us append arguments to fadump (powerpc) capture kernel,
|
||||
# further to the parameters passed via the bootloader.
|
||||
FADUMP_COMMANDLINE_APPEND="nr_cpus=16 numa=off cgroup_disable=memory cma=0 kvm_cma_resv_ratio=0 hugetlb_cma=0 transparent_hugepage=never novmcoredd udev.children-max=2"
|
||||
|
||||
# Any additional kexec arguments required. In most situations, this should
|
||||
# be left empty
|
||||
#
|
||||
@ -39,6 +43,10 @@ KDUMP_IMG="vmlinuz"
|
||||
#What is the images extension. Relocatable kernels don't have one
|
||||
KDUMP_IMG_EXT=""
|
||||
|
||||
# Enable vmcore creation notification by default, disable by setting
|
||||
# VMCORE_CREATION_NOTIFICATION=""
|
||||
VMCORE_CREATION_NOTIFICATION="yes"
|
||||
|
||||
#Specify the action after failure
|
||||
|
||||
# Logging is controlled by following variables in the first kernel:
|
||||
|
@ -42,6 +42,10 @@ KDUMP_IMG="vmlinuz"
|
||||
#What is the images extension. Relocatable kernels don't have one
|
||||
KDUMP_IMG_EXT=""
|
||||
|
||||
# Enable vmcore creation notification by default, disable by setting
|
||||
# VMCORE_CREATION_NOTIFICATION=""
|
||||
VMCORE_CREATION_NOTIFICATION="yes"
|
||||
|
||||
# Logging is controlled by following variables in the first kernel:
|
||||
# - @var KDUMP_STDLOGLVL - logging level to standard error (console output)
|
||||
# - @var KDUMP_SYSLOGLVL - logging level to syslog (by logger command)
|
||||
|
@ -39,6 +39,10 @@ KDUMP_IMG="vmlinuz"
|
||||
#What is the images extension. Relocatable kernels don't have one
|
||||
KDUMP_IMG_EXT=""
|
||||
|
||||
# Enable vmcore creation notification by default, disable by setting
|
||||
# VMCORE_CREATION_NOTIFICATION=""
|
||||
VMCORE_CREATION_NOTIFICATION="yes"
|
||||
|
||||
# Logging is controlled by following variables in the first kernel:
|
||||
# - @var KDUMP_STDLOGLVL - logging level to standard error (console output)
|
||||
# - @var KDUMP_SYSLOGLVL - logging level to syslog (by logger command)
|
||||
|
207
SOURCES/kdumpctl
207
SOURCES/kdumpctl
@ -18,6 +18,7 @@ KDUMP_INITRD=""
|
||||
TARGET_INITRD=""
|
||||
#kdump shall be the default dump mode
|
||||
DEFAULT_DUMP_MODE="kdump"
|
||||
VMCORE_CREATION_STATUS="/var/lib/kdump/vmcore-creation.status"
|
||||
image_time=0
|
||||
|
||||
standard_kexec_args="-p"
|
||||
@ -41,8 +42,10 @@ if ! dlog_init; then
|
||||
fi
|
||||
|
||||
KDUMP_TMPDIR=$(mktemp --tmpdir -d kdump.XXXX)
|
||||
TMPMNT="$KDUMP_TMPDIR/target"
|
||||
trap '
|
||||
ret=$?;
|
||||
is_mounted $TMPMNT && umount -f $TMPMNT;
|
||||
rm -rf "$KDUMP_TMPDIR"
|
||||
exit $ret;
|
||||
' EXIT
|
||||
@ -142,6 +145,8 @@ rebuild_kdump_initrd()
|
||||
|
||||
rebuild_initrd()
|
||||
{
|
||||
local _ret
|
||||
|
||||
if [[ ! -w $(dirname "$TARGET_INITRD") ]]; then
|
||||
derror "$(dirname "$TARGET_INITRD") does not have write permission. Cannot rebuild $TARGET_INITRD"
|
||||
return 1
|
||||
@ -152,6 +157,11 @@ rebuild_initrd()
|
||||
else
|
||||
rebuild_kdump_initrd
|
||||
fi
|
||||
|
||||
_ret=$?
|
||||
|
||||
set_vmcore_creation_status 'clear'
|
||||
return $_ret
|
||||
}
|
||||
|
||||
#$1: the files to be checked with IFS=' '
|
||||
@ -932,8 +942,24 @@ check_dump_feasibility()
|
||||
check_kdump_feasibility
|
||||
}
|
||||
|
||||
fadump_bootargs_append()
|
||||
{
|
||||
if [[ -f "$FADUMP_APPEND_ARGS_SYS_NODE" ]]; then
|
||||
output=$( { echo "${FADUMP_COMMANDLINE_APPEND}" > "$FADUMP_APPEND_ARGS_SYS_NODE" ; } 2>&1)
|
||||
if [ $? -eq 0 ]; then
|
||||
output=$(cat "$FADUMP_APPEND_ARGS_SYS_NODE")
|
||||
dinfo "fadump: additional parameters for capture kernel: '$output'"
|
||||
else
|
||||
dwarn "WARNING: failed to setup additional parameters for fadump capture kernel: '$output'"
|
||||
fi
|
||||
else
|
||||
dwarn "WARNING: this kernel does not support passing additional parameters to fadump capture kernel."
|
||||
fi
|
||||
}
|
||||
|
||||
start_fadump()
|
||||
{
|
||||
fadump_bootargs_append
|
||||
echo 1 > "$FADUMP_REGISTER_SYS_NODE"
|
||||
if ! is_kernel_loaded "fadump"; then
|
||||
derror "fadump: failed to register"
|
||||
@ -1120,6 +1146,7 @@ stop_kdump()
|
||||
|
||||
reload_fadump()
|
||||
{
|
||||
fadump_bootargs_append
|
||||
if echo 1 > "$FADUMP_REGISTER_SYS_NODE"; then
|
||||
dinfo "fadump: re-registered successfully"
|
||||
return 0
|
||||
@ -1756,6 +1783,179 @@ if [[ ! -f $KDUMP_CONFIG_FILE ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set_kdump_test_id()
|
||||
{
|
||||
local _id=$1
|
||||
|
||||
KDUMP_COMMANDLINE_APPEND+=" $_id "
|
||||
|
||||
if ! reload >& /dev/null; then
|
||||
derror "Set kdump test id fail."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# $1: success/fail/pending/manual/clear
|
||||
# $2: test id
|
||||
set_vmcore_creation_status()
|
||||
{
|
||||
local _status=$1
|
||||
local _kdump_test_id
|
||||
_dir=$(dirname "$VMCORE_CREATION_STATUS")
|
||||
|
||||
[[ -d "$_dir" ]] || mkdir -p "$_dir"
|
||||
[[ -w "$_dir" ]] || chmod +w "$_dir"
|
||||
|
||||
case "$_status" in
|
||||
pending)
|
||||
_kdump_test_id="kdump_test_id=$(date +%s-%N)"
|
||||
set_kdump_test_id "$_kdump_test_id"
|
||||
echo "$_status $_kdump_test_id" > "$VMCORE_CREATION_STATUS"
|
||||
;;
|
||||
success | fail | manual)
|
||||
sed -E -i "s/^\w+/$_status/" "$VMCORE_CREATION_STATUS"
|
||||
;;
|
||||
clear)
|
||||
rm -f "$VMCORE_CREATION_STATUS"
|
||||
;;
|
||||
*)
|
||||
return
|
||||
esac
|
||||
sync -f "$_dir"
|
||||
}
|
||||
|
||||
fetch_status()
|
||||
{
|
||||
local _test_id="$1" _mnt
|
||||
local _status _target
|
||||
|
||||
is_raw_dump_target && return 2
|
||||
|
||||
_status="$(get_save_path)/kdump-test-$_test_id/vmcore-creation.status"
|
||||
|
||||
if is_nfs_dump_target || is_fs_dump_target; then
|
||||
if is_fs_dump_target; then
|
||||
_target=$(fs_dump_target)
|
||||
else
|
||||
_target=$(kdump_get_conf_val nfs)
|
||||
fi
|
||||
_mnt=$(get_mntpoint_from_target "$_target")
|
||||
if [[ -z "$_mnt" ]] || ! is_mounted "$_mnt"; then
|
||||
mkdir -p "$TMPMNT"
|
||||
mount "$_target" "$TMPMNT" -o defaults || \
|
||||
{ dwarn "Failed to mount $_target" && return 2; }
|
||||
_mnt="$TMPMNT"
|
||||
fi
|
||||
_status="$_mnt/$_status"
|
||||
elif is_ssh_dump_target; then
|
||||
local _scp_address
|
||||
|
||||
if is_ipv6_address "${OPT[_target]}"; then
|
||||
_scp_address="${OPT[_target]%@*}@[${OPT[_target]#*@}]"
|
||||
else
|
||||
_scp_address="${OPT[_target]}"
|
||||
fi
|
||||
|
||||
scp -q -i "${OPT[sshkey]}" -o BatchMode=yes \
|
||||
"$_scp_address:$_status" \
|
||||
"$KDUMP_TMPDIR"
|
||||
case "$?" in
|
||||
0)
|
||||
# success
|
||||
;;
|
||||
1)
|
||||
# file not found
|
||||
return 1
|
||||
;;
|
||||
255)
|
||||
# no connection to host
|
||||
return 2
|
||||
esac
|
||||
_status="$KDUMP_TMPDIR/vmcore-creation.status"
|
||||
fi
|
||||
[[ -f "$_status" ]] || return 1
|
||||
grep -q "success" "$_status" && return 0 || return 1
|
||||
}
|
||||
|
||||
check_vmcore_creation_status()
|
||||
{
|
||||
local _status _test_id _timestamp _status_date
|
||||
|
||||
[[ ${VMCORE_CREATION_NOTIFICATION,,} == "yes" ]] || return
|
||||
|
||||
[[ "$DEFAULT_DUMP_MODE" == "kdump" ]] || return
|
||||
|
||||
if [[ ! -s "$VMCORE_CREATION_STATUS" ]]; then
|
||||
dwarn "Notice: No vmcore creation test performed!"
|
||||
return
|
||||
fi
|
||||
|
||||
read -r _status _test_id < "$VMCORE_CREATION_STATUS"
|
||||
_test_id=${_test_id#*=}
|
||||
_timestamp=${_test_id%-*}
|
||||
_status_date=$(date -d "@$_timestamp")
|
||||
|
||||
if [[ "$_status" == "pending" ]]; then
|
||||
fetch_status "$_test_id"
|
||||
case "$?" in
|
||||
0)
|
||||
_status="success"
|
||||
;;
|
||||
1)
|
||||
_status="fail"
|
||||
;;
|
||||
*)
|
||||
_status="manual"
|
||||
;;
|
||||
esac
|
||||
set_vmcore_creation_status "$_status"
|
||||
fi
|
||||
|
||||
case "$_status" in
|
||||
success)
|
||||
dinfo "Notice: Last successful vmcore creation on $_status_date"
|
||||
;;
|
||||
fail)
|
||||
dwarn "Notice: Last NOT successful vmcore creation on $_status_date"
|
||||
;;
|
||||
manual)
|
||||
dwarn "Notice: Require manual check for kdump test of $_status_date"
|
||||
;;
|
||||
*)
|
||||
derror "Unknown test status: $_status"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
kdump_test()
|
||||
{
|
||||
if ! is_kernel_loaded "$DEFAULT_DUMP_MODE"; then
|
||||
derror "Kdump needs be operational before test."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "$DEFAULT_DUMP_MODE" == "kdump" ]]; then
|
||||
derror "Only kdump is supported for test."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! "$1" == "--force" ]]; then
|
||||
read -r -p "DANGER!!! Will perform a kdump test by crashing the system, proceed? (y/N): " input
|
||||
case $input in
|
||||
[Yy] )
|
||||
dinfo "Start kdump test..."
|
||||
;;
|
||||
* )
|
||||
dinfo "Operation cancelled."
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
set_vmcore_creation_status 'pending'
|
||||
echo c > /proc/sysrq-trigger
|
||||
}
|
||||
|
||||
main()
|
||||
{
|
||||
# Determine if the dump mode is kdump or fadump
|
||||
@ -1786,6 +1986,7 @@ main()
|
||||
EXIT_CODE=3
|
||||
;;
|
||||
esac
|
||||
check_vmcore_creation_status
|
||||
exit $EXIT_CODE
|
||||
;;
|
||||
reload)
|
||||
@ -1816,6 +2017,10 @@ main()
|
||||
shift
|
||||
reset_crashkernel "$@"
|
||||
;;
|
||||
test)
|
||||
shift
|
||||
kdump_test "$@"
|
||||
;;
|
||||
_reset-crashkernel-after-update)
|
||||
if [[ $(kdump_get_conf_val auto_reset_crashkernel) != no ]]; then
|
||||
reset_crashkernel_after_update
|
||||
@ -1827,7 +2032,7 @@ main()
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
dinfo $"Usage: $0 {estimate|start|stop|status|restart|reload|rebuild|reset-crashkernel|propagate|showmem}"
|
||||
dinfo $"Usage: $0 {estimate|start|stop|status|restart|reload|rebuild|reset-crashkernel|propagate|showmem|test}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
@ -70,7 +70,16 @@ Note: The memory requirements for kdump varies heavily depending on the
|
||||
used hardware and system configuration. Thus the recommended
|
||||
crashkernel might not work for your specific setup. Please test if
|
||||
kdump works after resetting the crashkernel value.
|
||||
|
||||
.TP
|
||||
.I test [--force]
|
||||
Test the kdump by actually trigger the system crash & dump, and check if a
|
||||
vmcore can really be generated successfully based on current config and
|
||||
environment. After system reboot back to normal, check the test result
|
||||
by "kdumpctl status". Note, fadump is not supported.
|
||||
|
||||
If the optional parameter [--force] is provided, there will be no confirmation
|
||||
before triggering the system crash. Dangerous though, this option is meant
|
||||
for automation testing.
|
||||
.SH "SEE ALSO"
|
||||
.BR kdump.conf (5),
|
||||
.BR mkdumprd (8)
|
||||
|
@ -1,39 +0,0 @@
|
||||
From bd0200c47c45dd420244b39ddabcecdab1fb9a8e Mon Sep 17 00:00:00 2001
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Date: Wed, 20 Sep 2023 17:29:27 +0530
|
||||
Subject: [PATCH] kexec: update manpage with explicit mention of clean kexec
|
||||
|
||||
While the manpage does mention about kexec boot with a clean shutdown,
|
||||
it is not explicit about it. Make it explicit.
|
||||
|
||||
Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Signed-off-by: Simon Horman <horms@kernel.org>
|
||||
---
|
||||
kexec/kexec.8 | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kexec/kexec.8 b/kexec/kexec.8
|
||||
index 3a344c5..179dcf2 100644
|
||||
--- a/kexec/kexec.8
|
||||
+++ b/kexec/kexec.8
|
||||
@@ -95,8 +95,15 @@ then you would use the following command to load the kernel:
|
||||
.RB "\-\-append=" "root=/dev/hda1" "\ \-\-initrd=" /boot/initrd
|
||||
.RE
|
||||
.PP
|
||||
-After this kernel is loaded, it can be booted to at any time using the
|
||||
-command:
|
||||
+After this kernel is loaded, assuming the user-space supports kexec-based
|
||||
+rebooting, it can be booted to, with a clean shutdown, using the command:
|
||||
+
|
||||
+.RS
|
||||
+.BR reboot
|
||||
+.RE
|
||||
+.PP
|
||||
+Alternatively, it can also be booted to, without calling shutdown(8), with
|
||||
+the command:
|
||||
|
||||
.RS
|
||||
.BR kexec \ \-e
|
||||
--
|
||||
2.41.0
|
||||
|
@ -1,44 +0,0 @@
|
||||
From 9d9cf8de8b2ad8273861a30476a46f34cd34871a Mon Sep 17 00:00:00 2001
|
||||
From: Baoquan He <bhe@redhat.com>
|
||||
Date: Tue, 14 Nov 2023 23:20:30 +0800
|
||||
Subject: [PATCH] kexec_file: add kexec_file flag to support debug printing
|
||||
Content-type: text/plain
|
||||
|
||||
This add KEXEC_FILE_DEBUG to kexec_file_flags so that it can be passed
|
||||
to kernel when '-d' is added with kexec_file_load interface. With that
|
||||
flag enabled, kernel can enable the debugging message printing.
|
||||
|
||||
Signed-off-by: Baoquan He <bhe@redhat.com>
|
||||
Signed-off-by: Simon Horman <horms@kernel.org>
|
||||
---
|
||||
kexec/kexec-syscall.h | 1 +
|
||||
kexec/kexec.c | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
|
||||
index 2559bffb93da..73e52543e1b0 100644
|
||||
--- a/kexec/kexec-syscall.h
|
||||
+++ b/kexec/kexec-syscall.h
|
||||
@@ -119,6 +119,7 @@ static inline long kexec_file_load(int kernel_fd, int initrd_fd,
|
||||
#define KEXEC_FILE_UNLOAD 0x00000001
|
||||
#define KEXEC_FILE_ON_CRASH 0x00000002
|
||||
#define KEXEC_FILE_NO_INITRAMFS 0x00000004
|
||||
+#define KEXEC_FILE_DEBUG 0x00000008
|
||||
|
||||
/* These values match the ELF architecture values.
|
||||
* Unless there is a good reason that should continue to be the case.
|
||||
diff --git a/kexec/kexec.c b/kexec/kexec.c
|
||||
index 9d0ec46e5657..222f79e3112e 100644
|
||||
--- a/kexec/kexec.c
|
||||
+++ b/kexec/kexec.c
|
||||
@@ -1477,6 +1477,7 @@ int main(int argc, char *argv[])
|
||||
return 0;
|
||||
case OPT_DEBUG:
|
||||
kexec_debug = 1;
|
||||
+ kexec_file_flags |= KEXEC_FILE_DEBUG;
|
||||
break;
|
||||
case OPT_NOIFDOWN:
|
||||
skip_ifdown = 1;
|
||||
--
|
||||
2.41.0
|
||||
|
@ -27,7 +27,7 @@ SAVE_PATH=$(get_save_path)
|
||||
OVERRIDE_RESETTABLE=0
|
||||
|
||||
extra_modules=""
|
||||
dracut_args=(--add kdumpbase --quiet --hostonly --hostonly-cmdline --hostonly-i18n --hostonly-mode strict --hostonly-nics '' -o "plymouth resume ifcfg earlykdump")
|
||||
dracut_args=(--quiet --hostonly --hostonly-cmdline --hostonly-i18n --hostonly-mode strict --hostonly-nics '')
|
||||
|
||||
MKDUMPRD_TMPDIR="$(mktemp -d -t mkdumprd.XXXXXX)"
|
||||
[ -d "$MKDUMPRD_TMPDIR" ] || perror_exit "dracut: mktemp -p -d -t dracut.XXXXXX failed."
|
||||
@ -474,6 +474,15 @@ if [[ -d /sys/module/nvme ]]; then
|
||||
add_dracut_arg "--add-drivers" "nvme"
|
||||
fi
|
||||
|
||||
# Use kdump managed dracut profile.
|
||||
[[ $kdump_dracut_confdir ]] || kdump_dracut_confdir=/lib/kdump/dracut.conf.d
|
||||
if [[ "$(dracut --help)" == *--add-confdir* ]] && [[ -d "$kdump_dracut_confdir" ]]; then
|
||||
dracut_args+=("--add-confdir" "$kdump_dracut_confdir")
|
||||
else
|
||||
dracut_args+=(--add kdumpbase)
|
||||
dracut_args+=(--omit "plymouth resume ifcfg earlykdump")
|
||||
fi
|
||||
|
||||
dracut "${dracut_args[@]}" "$@"
|
||||
|
||||
_rc=$?
|
||||
|
@ -1,11 +1,11 @@
|
||||
%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
|
||||
%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
|
||||
%global mkdf_ver 1.7.4
|
||||
%global mkdf_ver 1.7.6
|
||||
%global mkdf_shortver %(c=%{mkdf_ver}; echo ${c:0:7})
|
||||
|
||||
Name: kexec-tools
|
||||
Version: 2.0.27
|
||||
Release: 15%{?dist}
|
||||
Version: 2.0.29
|
||||
Release: 5%{?dist}
|
||||
License: GPLv2
|
||||
Summary: The kexec/kdump userspace component
|
||||
|
||||
@ -46,6 +46,7 @@ Source35: kdump-migrate-action.sh
|
||||
Source36: kdump-restart.sh
|
||||
Source37: 60-fadump.install
|
||||
Source38: supported-kdump-targets.txt
|
||||
Source39: 99-kdump.conf
|
||||
|
||||
#######################################
|
||||
# These are sources for mkdumpramfs
|
||||
@ -113,8 +114,6 @@ Requires: systemd-udev%{?_isa}
|
||||
#
|
||||
# Patches 601 onward are generic patches
|
||||
#
|
||||
Patch601: kexec-update-manpage-with-explicit-mention-of-clean-.patch
|
||||
Patch602: kexec_file-add-kexec_file-flag-to-support-debug-prin.patch
|
||||
|
||||
%description
|
||||
kexec-tools provides /sbin/kexec binary that facilitates a new
|
||||
@ -130,9 +129,6 @@ mkdir -p -m755 kcp
|
||||
tar -z -x -v -f %{SOURCE9}
|
||||
tar -z -x -v -f %{SOURCE19}
|
||||
|
||||
%patch601 -p1
|
||||
%patch602 -p1
|
||||
|
||||
%ifarch ppc
|
||||
%define archdef ARCH=ppc
|
||||
%endif
|
||||
@ -184,7 +180,7 @@ mkdir -p -m755 $RPM_BUILD_ROOT%{_udevrulesdir}
|
||||
mkdir -p $RPM_BUILD_ROOT%{_unitdir}
|
||||
mkdir -p -m755 $RPM_BUILD_ROOT%{_bindir}
|
||||
mkdir -p -m755 $RPM_BUILD_ROOT%{_libdir}
|
||||
mkdir -p -m755 $RPM_BUILD_ROOT%{_prefix}/lib/kdump
|
||||
mkdir -p -m755 $RPM_BUILD_ROOT%{_prefix}/lib/kdump/dracut.conf.d
|
||||
mkdir -p -m755 $RPM_BUILD_ROOT%{_sharedstatedir}/kdump
|
||||
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/kdumpctl
|
||||
|
||||
@ -206,6 +202,7 @@ install -m 644 %{SOURCE25} $RPM_BUILD_ROOT%{_mandir}/man8/kdumpctl.8
|
||||
install -m 755 %{SOURCE20} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-lib.sh
|
||||
install -m 755 %{SOURCE23} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-lib-initramfs.sh
|
||||
install -m 755 %{SOURCE31} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-logger.sh
|
||||
install -m 644 %{SOURCE39} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/dracut.conf.d/99-kdump.conf
|
||||
%ifarch ppc64 ppc64le
|
||||
install -m 755 %{SOURCE32} $RPM_BUILD_ROOT/usr/sbin/mkfadumprd
|
||||
install -m 755 %{SOURCE35} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-migrate-action.sh
|
||||
@ -410,6 +407,35 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Jan 17 2025 Tao Liu <ltao@redhat.com> - 2.0.29-5
|
||||
- 99-kdump.conf: Omit nouveau and amdgpu module
|
||||
|
||||
* Fri Jan 10 2025 Tao Liu <ltao@redhat.com> - 2.0.29-4
|
||||
- kdump.service: Replace ConditionKernelCommandLine with ExecCondition
|
||||
|
||||
* Fri Dec 13 2024 Tao Liu <ltao@redhat.com> - 2.0.29-3
|
||||
- fadump: fix passing additional parameters for capture kernel
|
||||
- fadump: pass additional parameters for capture kernel
|
||||
|
||||
* Fri Dec 6 2024 Tao Liu <ltao@redhat.com> - 2.0.29-2
|
||||
- Re-introduce vmcore creation notification to kdump
|
||||
- Revert "Introduce vmcore creation notification to kdump"
|
||||
- Add kdump dracut config
|
||||
- kdump-lib-initramfs: Improve mount point retrieval logic
|
||||
|
||||
* Wed Nov 6 2024 Tao Liu <ltao@redhat.com> - 2.0.29-1
|
||||
- Release 2.0.29-1
|
||||
- Rebase makedumpfile to v1.7.6
|
||||
|
||||
* Mon Oct 21 2024 Tao Liu <ltao@redhat.com> - 2.0.27-18
|
||||
- Return the correct exit code of rebuild initrd
|
||||
|
||||
* Tue Oct 8 2024 Tao Liu <ltao@redhat.com> - 2.0.27-17
|
||||
- Introduce vmcore creation notification to kdump
|
||||
|
||||
* Tue Sep 10 2024 Tao Liu <ltao@redhat.com> - 2.0.27-16
|
||||
- Revert "lib: Ensure we don't find bind mounts for device target"
|
||||
|
||||
* Wed Aug 7 2024 Tao Liu <ltao@redhat.com> - 2.0.27-15
|
||||
- Support setting up Open vSwitch (Ovs) Bridge network
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user