all: Rename the tool to kdumpst
Big but self-explanatory commit: rename the tool. The name choice was kdumpst, since it's a tool to enable both kdump and pstore setting, also it's a silly wordplay with the superlative of kdump, as in "kdumpest". It's an invasive change (touches most of the files), but should offer no functional change other than logging messages showing kdumpst now, instead of kdump, and some filenames. Notice it doesn't touch documentation, which will be done in a subsequent commit. Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
#
|
||||
# Configuration settings for kdump/pstore. After _any_ change in this
|
||||
# file, it's required to re-create the kdump minimal initramfs by running:
|
||||
# /usr/lib/kdump/kdump-load.sh create-initrd
|
||||
# /usr/lib/kdumpst/kdumpst-load.sh create-initrd
|
||||
#
|
||||
#
|
||||
# Pstore-RAM settings
|
||||
@ -27,7 +27,7 @@ PSTORE_RECORD_SZ=1048576
|
||||
# be stored, as well as the kdump initrd and some ancillary data. This
|
||||
# directory should be in an accessible filesystem (read/write) and if such
|
||||
# folder doesn't exist, it'll be created.
|
||||
MOUNT_FOLDER="/var/crash/kdump"
|
||||
MOUNT_FOLDER="/var/crash/kdumpst"
|
||||
#
|
||||
#
|
||||
# Kdump controlling settings
|
||||
@ -48,7 +48,7 @@ KDUMP_APPEND_CMDLINE="panic=-1 oops=panic fsck.mode=force fsck.repair=yes nr_cpu
|
||||
#
|
||||
#
|
||||
# GRUB-related settings
|
||||
# GRUB_AUTOSET determines if the pstore/kdump tooling should try to
|
||||
# GRUB_AUTOSET determines if the kdumpst loader tool should try to
|
||||
# automatically set grub.cfg in order to reserve memory for kdump (if
|
||||
# needed, i.e., when pstore is not in use) - keep it as '1' for enabling
|
||||
# the mechanism (this is the default). GRUB_BOOT_FILE is the full path of
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
|
||||
#
|
||||
# This file sets the sysctl parameters that are used by the
|
||||
# kdump package, in order to panic and reboot on severe events,
|
||||
# like oops or hard lockups.
|
||||
# kdumpst package, in order to panic and reboot on severe
|
||||
# events, like oops or hard lockups.
|
||||
# We also set panic_print in order to collect more info.
|
||||
|
||||
kernel.panic_on_oops = 1
|
||||
|
||||
30
Makefile
30
Makefile
@ -10,7 +10,7 @@ sysctldir := $(shell pkg-config --define-variable=prefix=$(prefix) --variable=sy
|
||||
|| echo $(libdir)/sysctl.d/)
|
||||
alpmhooksdir := $(shell echo $(sharedir)/libalpm/hooks/)
|
||||
|
||||
kdump-load.sh: kdump-load.header common.sh kdump-load.sh.in
|
||||
kdumpst-load.sh: kdumpst-load.header common.sh kdumpst-load.sh.in
|
||||
cat $^ > $@
|
||||
|
||||
save-dumps.sh: save-dumps.header common.sh save-dumps.sh.in
|
||||
@ -53,28 +53,28 @@ kdump.install: initramfs/initcpio/kdump.install.header common.sh initramfs/initc
|
||||
.PHONY: mkinitcpio
|
||||
mkinitcpio: 99-kdump-mkinitcpio.hook 99-kdump-mkinitcpio-git.hook kdump-mkinitcpio-hook.sh kdump.hook kdump.install
|
||||
|
||||
all: kdump-load.sh save-dumps.sh dracut mkinitcpio
|
||||
all: kdumpst-load.sh save-dumps.sh dracut mkinitcpio
|
||||
|
||||
install: all
|
||||
install -D -m0644 kdump-init.service $(DESTDIR)$(systemdunitsdir)/kdump-init.service
|
||||
install -D -m0644 kdumpst-init.service $(DESTDIR)$(systemdunitsdir)/kdumpst-init.service
|
||||
install -D -m0644 20-panic-sysctls.conf $(DESTDIR)$(sysctldir)/20-panic-sysctls.conf
|
||||
install -D -m0644 README.md $(DESTDIR)$(libdir)/kdump/README.md
|
||||
install -D -m0755 kdump-load.sh $(DESTDIR)$(libdir)/kdump/kdump-load.sh
|
||||
install -D -m0755 save-dumps.sh $(DESTDIR)$(libdir)/kdump/save-dumps.sh
|
||||
install -D -m0644 00-default.conf $(DESTDIR)$(sharedir)/kdump.d/00-default
|
||||
install -D -m0644 README.md $(DESTDIR)$(libdir)/kdumpst/README.md
|
||||
install -D -m0755 kdumpst-load.sh $(DESTDIR)$(libdir)/kdumpst/kdumpst-load.sh
|
||||
install -D -m0755 save-dumps.sh $(DESTDIR)$(libdir)/kdumpst/save-dumps.sh
|
||||
install -D -m0644 00-default.conf $(DESTDIR)$(sharedir)/kdumpst.d/00-default
|
||||
install -D -m0644 initramfs/99-kdump-dracut.hook $(DESTDIR)$(alpmhooksdir)/99-kdump-dracut.hook
|
||||
install -D -m0644 initramfs/99-kdump-mkinitcpio.hook $(DESTDIR)$(alpmhooksdir)/99-kdump-mkinitcpio.hook
|
||||
install -D -m0644 initramfs/99-kdump-mkinitcpio-git.hook $(DESTDIR)$(alpmhooksdir)/99-kdump-mkinitcpio-git.hook
|
||||
install -D -m0755 initramfs/dracut/kdump-dracut-hook.sh $(DESTDIR)$(libdir)/kdump/kdump-dracut-hook.sh
|
||||
install -D -m0755 initramfs/kdump-collect.sh $(DESTDIR)$(libdir)/kdump/dracut/kdump-collect.sh
|
||||
install -D -m0755 initramfs/dracut/module-setup.sh $(DESTDIR)$(libdir)/kdump/dracut/module-setup.sh
|
||||
install -D -m0755 initramfs/initcpio/kdump-mkinitcpio-hook.sh $(DESTDIR)$(libdir)/kdump/kdump-mkinitcpio-hook.sh
|
||||
install -D -m0755 initramfs/initcpio/kdump-mkinitcpio-hook.sh $(DESTDIR)$(libdir)/kdump/kdump-mkinitcpio-git-hook.sh
|
||||
install -D -m0644 initramfs/initcpio/kdump.hook $(DESTDIR)$(libdir)/kdump/initcpio/kdump.hook
|
||||
install -D -m0644 initramfs/initcpio/kdump.install $(DESTDIR)$(libdir)/kdump/initcpio/kdump.install
|
||||
install -D -m0755 initramfs/dracut/kdump-dracut-hook.sh $(DESTDIR)$(libdir)/kdumpst/kdump-dracut-hook.sh
|
||||
install -D -m0755 initramfs/kdump-collect.sh $(DESTDIR)$(libdir)/kdumpst/dracut/kdump-collect.sh
|
||||
install -D -m0755 initramfs/dracut/module-setup.sh $(DESTDIR)$(libdir)/kdumpst/dracut/module-setup.sh
|
||||
install -D -m0755 initramfs/initcpio/kdump-mkinitcpio-hook.sh $(DESTDIR)$(libdir)/kdumpst/kdump-mkinitcpio-hook.sh
|
||||
install -D -m0755 initramfs/initcpio/kdump-mkinitcpio-hook.sh $(DESTDIR)$(libdir)/kdumpst/kdump-mkinitcpio-git-hook.sh
|
||||
install -D -m0644 initramfs/initcpio/kdump.hook $(DESTDIR)$(libdir)/kdumpst/initcpio/kdump.hook
|
||||
install -D -m0644 initramfs/initcpio/kdump.install $(DESTDIR)$(libdir)/kdumpst/initcpio/kdump.install
|
||||
|
||||
clean:
|
||||
rm -f kdump-load.sh save-dumps.sh
|
||||
rm -f kdumpst-load.sh save-dumps.sh
|
||||
rm -f initramfs/99-kdump-*
|
||||
rm -f initramfs/dracut/{kdump-dracut-hook.sh,module-setup.sh}
|
||||
rm -f initramfs/initcpio/kdump{-mkinitcpio-hook.sh,.hook,.install}
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
# This function has the purpose of loading the necessary external
|
||||
# variables, in the form of one (or more) configuration file(s). If the
|
||||
# procedure fails, we must abort - otherwise it'll fail in a later stage.
|
||||
load_kdump_config() {
|
||||
load_kdumpst_config() {
|
||||
HAVE_CFG_FILES=0
|
||||
shopt -s nullglob
|
||||
for cfg in "/usr/share/kdump.d"/*; do
|
||||
for cfg in "/usr/share/kdumpst.d"/*; do
|
||||
if [ -f "$cfg" ]; then
|
||||
. "$cfg"
|
||||
HAVE_CFG_FILES=1
|
||||
@ -14,7 +14,7 @@ load_kdump_config() {
|
||||
shopt -u nullglob
|
||||
|
||||
if [ ${HAVE_CFG_FILES} -eq 0 ]; then
|
||||
logger "kdump: no config files in /usr/share/kdump.d/ - aborting."
|
||||
logger "kdumpst: no config files in /usr/share/kdumpst.d/ - aborting."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
@ -23,5 +23,5 @@ Target = INITRD
|
||||
Description = Managing kdump minimal initramfs and INITRD hooks...
|
||||
Depends=INITRD
|
||||
When = PostTransaction
|
||||
Exec = /usr/lib/kdump/kdump-INITRD-hook.sh
|
||||
Exec = /usr/lib/kdumpst/kdump-INITRD-hook.sh
|
||||
NeedsTargets
|
||||
|
||||
@ -7,7 +7,7 @@ set -eo pipefail # exclude -u on purpose to avoid issues with param checking
|
||||
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
|
||||
#
|
||||
# This is the generic alpm-hook script that handles kernel/package
|
||||
# installation for INITRD users, on behalf of kdump. Covers both manual
|
||||
# installation for INITRD users, on behalf of kdumpst. Covers both manual
|
||||
# invocation (to create the initramfs image for a given kernel) as
|
||||
# well as kernel package installation/removal trigger. It also handles
|
||||
# the event of installing the package INITRD, which requires the
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
load_kdump_config
|
||||
load_kdumpst_config
|
||||
|
||||
# General comment of a caveat here: INITRD_installation() must be
|
||||
# reentrant and only install the INITRD handlers if they're not
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
# the initramfs for dracut users, but also with regards to
|
||||
# installing dracut specific hooks/scripts.
|
||||
#
|
||||
# IMPORTANT: it is assumed that kdump configuration was loaded
|
||||
# IMPORTANT: it is assumed that kdumpst configuration was loaded
|
||||
# before running any of these functions!
|
||||
#
|
||||
create_initramfs_dracut() {
|
||||
@ -22,12 +22,12 @@ create_initramfs_dracut() {
|
||||
--kver "$1" "${MOUNT_FOLDER}/kdump-initrd-$1.img"
|
||||
|
||||
if [ -s "${MOUNT_FOLDER}/kdump-initrd-$1.img" ]; then
|
||||
logger "kdump: created dracut minimal initramfs"
|
||||
logger "kdumpst: created dracut minimal initramfs"
|
||||
fi
|
||||
}
|
||||
|
||||
dracut_installation() {
|
||||
HOOKS_DIR="/usr/lib/kdump/dracut/"
|
||||
HOOKS_DIR="/usr/lib/kdumpst/dracut/"
|
||||
|
||||
DRACUT_DIR="$(pkg-config --variable=dracutmodulesdir dracut 2>/dev/null)"
|
||||
if [ -z "${DRACUT_DIR}" ]; then
|
||||
@ -37,7 +37,7 @@ dracut_installation() {
|
||||
if [ ! -d "${DRACUT_DIR}"/55kdump/ ]; then
|
||||
install -D -m0755 "${HOOKS_DIR}"/kdump-collect.sh "${DRACUT_DIR}"/55kdump/kdump-collect.sh
|
||||
install -D -m0755 "${HOOKS_DIR}"/module-setup.sh "${DRACUT_DIR}"/55kdump/module-setup.sh
|
||||
logger "kdump: dracut hooks/scripts installed"
|
||||
logger "kdumpst: dracut hooks/scripts installed"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@ -6,5 +6,5 @@
|
||||
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
|
||||
#
|
||||
# Kdump-initrd module construction/inclusion script for
|
||||
# Dracut-based initramfs.
|
||||
# Dracut-based initramfs - part of the kdumpst tooling.
|
||||
#
|
||||
|
||||
@ -4,7 +4,7 @@ check() {
|
||||
}
|
||||
|
||||
installkernel() {
|
||||
load_kdump_config
|
||||
load_kdumpst_config
|
||||
|
||||
# First clear all unnecessary firmwares/drivers added by drm in order
|
||||
# to reduce the size of the minimal initramfs being created - kdump
|
||||
@ -16,7 +16,7 @@ installkernel() {
|
||||
|
||||
FSMOD="$(findmnt -n -o FSTYPE --target "${MOUNT_FOLDER}")"
|
||||
if [ -z "${FSMOD}" ]; then
|
||||
logger "kdump: error on filesystem discovery"
|
||||
logger "kdumpst: error on filesystem discovery"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -39,38 +39,38 @@ installkernel() {
|
||||
install() {
|
||||
# A valid makedumpfile is essential for the kdump initrd creation.
|
||||
if ! command -v makedumpfile 1>/dev/null; then
|
||||
logger "kdump: failed to create dracut initrd, makedumpfile is missing"
|
||||
logger "kdumpst: failed to create dracut initrd, makedumpfile is missing"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
load_kdump_config
|
||||
load_kdumpst_config
|
||||
|
||||
# Install necessary binaries
|
||||
inst date
|
||||
inst sync
|
||||
inst makedumpfile
|
||||
|
||||
# Copying kdump config/lib files is essential for a functional kdump.
|
||||
cp -LR --preserve=all /usr/share/kdump.d/ "$initdir"/usr/share/
|
||||
cp -LR --preserve=all /usr/lib/kdump/ "$initdir"/usr/lib/
|
||||
# Copying kdumpst config/lib files is essential for a functional kdump.
|
||||
cp -LR --preserve=all /usr/share/kdumpst.d/ "$initdir"/usr/share/
|
||||
cp -LR --preserve=all /usr/lib/kdumpst/ "$initdir"/usr/lib/
|
||||
|
||||
# Finally, we need to derive the proper place to save the dump from the
|
||||
# config files, in a way that makes possible to mount it in early boot.
|
||||
DEVNODE="$(findmnt -n -o SOURCE --target "${MOUNT_FOLDER}")"
|
||||
if [ -z "${DEVNODE}" ]; then
|
||||
logger "kdump: error on devnode discovery"
|
||||
logger "kdumpst: error on devnode discovery"
|
||||
exit 1
|
||||
fi
|
||||
echo "${DEVNODE}" > "$initdir"/usr/lib/kdump/kdump.mnt
|
||||
echo "${DEVNODE}" > "$initdir"/usr/lib/kdumpst/kdump.mnt
|
||||
|
||||
TGT="$(findmnt -n -o TARGET --target "${MOUNT_FOLDER}")"
|
||||
if [ -z "${TGT}" ]; then
|
||||
logger "kdump: error on base folder discovery"
|
||||
logger "kdumpst: error on base folder discovery"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BASE_FLD="${MOUNT_FOLDER#*$TGT}"
|
||||
echo "${BASE_FLD}" > "$initdir"/usr/lib/kdump/kdump.dir
|
||||
echo "${BASE_FLD}" > "$initdir"/usr/lib/kdumpst/kdump.dir
|
||||
|
||||
inst_hook pre-mount 01 "$moddir/kdump-collect.sh"
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
# the initramfs for mkinitcpio users, but also with regards to
|
||||
# installing its specific hooks.
|
||||
#
|
||||
# IMPORTANT: it is assumed that kdump configuration was loaded
|
||||
# IMPORTANT: it is assumed that kdumpst configuration was loaded
|
||||
# before running any of these functions!
|
||||
#
|
||||
create_initramfs_mkinitcpio() {
|
||||
@ -11,19 +11,19 @@ create_initramfs_mkinitcpio() {
|
||||
mkinitcpio -A kdump -g "${MOUNT_FOLDER}/kdump-initrd-$1.img" "$1" 1>/dev/null
|
||||
|
||||
if [ -s "${MOUNT_FOLDER}/kdump-initrd-$1.img" ]; then
|
||||
logger "kdump: created initcpio minimal initramfs"
|
||||
logger "kdumpst: created initcpio minimal initramfs"
|
||||
fi
|
||||
}
|
||||
|
||||
mkinitcpio_installation() {
|
||||
KDUMP_HOOKS_DIR="/usr/lib/kdump/initcpio/"
|
||||
KDUMP_HOOKS_DIR="/usr/lib/kdumpst/initcpio/"
|
||||
INITCPIO_HOOKS="/usr/lib/initcpio/hooks"
|
||||
INITCPIO_INST="/usr/lib/initcpio/install"
|
||||
|
||||
if [ ! -e "${INITCPIO_HOOKS}"/kdump ] || [ ! -e "${INITCPIO_INST}"/kdump ]; then
|
||||
install -D -m0644 "${KDUMP_HOOKS_DIR}"/kdump.hook "${INITCPIO_HOOKS}"/kdump
|
||||
install -D -m0644 "${KDUMP_HOOKS_DIR}"/kdump.install "${INITCPIO_INST}"/kdump
|
||||
logger "kdump: initcpio hooks installed"
|
||||
logger "kdumpst: initcpio hooks installed"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@ -5,5 +5,5 @@
|
||||
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
|
||||
#
|
||||
# Kdump-initrd module construction/inclusion script for
|
||||
# initcpio-based initramfs.
|
||||
# initcpio-based initramfs - part of the kdumpst tooling.
|
||||
#
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
build() {
|
||||
load_kdump_config
|
||||
load_kdumpst_config
|
||||
|
||||
# A valid makedumpfile is essential for the kdump initrd creation.
|
||||
if ! command -v makedumpfile 1>/dev/null; then
|
||||
logger "kdump: failed to create minimal initrd, makedumpfile is missing"
|
||||
logger "kdumpst: failed to create minimal initrd, makedumpfile is missing"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -12,26 +12,26 @@ build() {
|
||||
add_binary "$(command -v makedumpfile)"
|
||||
|
||||
# Copying kdump config/lib files is essential for a functional kdump.
|
||||
add_full_dir /usr/share/kdump.d/
|
||||
add_full_dir /usr/lib/kdump/
|
||||
add_full_dir /usr/share/kdumpst.d/
|
||||
add_full_dir /usr/lib/kdumpst/
|
||||
|
||||
# We need to derive the proper place to save the dump from the
|
||||
# config files, in a way that makes possible to mount it in early boot.
|
||||
DEVNODE="$(findmnt -n -o SOURCE --target "${MOUNT_FOLDER}")"
|
||||
if [ -z "${DEVNODE}" ]; then
|
||||
logger "kdump: error on devnode discovery"
|
||||
logger "kdumpst: error on devnode discovery"
|
||||
exit 1
|
||||
fi
|
||||
echo "${DEVNODE}" > "${BUILDROOT}"/usr/lib/kdump/kdump.mnt
|
||||
echo "${DEVNODE}" > "${BUILDROOT}"/usr/lib/kdumpst/kdump.mnt
|
||||
|
||||
TGT="$(findmnt -n -o TARGET --target "${MOUNT_FOLDER}")"
|
||||
if [ -z "${TGT}" ]; then
|
||||
logger "kdump: error on base folder discovery"
|
||||
logger "kdumpst: error on base folder discovery"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BASE_FLD="${MOUNT_FOLDER#*$TGT}"
|
||||
echo "${BASE_FLD}" > "${BUILDROOT}"/usr/lib/kdump/kdump.dir
|
||||
echo "${BASE_FLD}" > "${BUILDROOT}"/usr/lib/kdumpst/kdump.dir
|
||||
|
||||
# Finally, we shouldn't have DRM/GPU drivers and firmwares here,
|
||||
# but...just in case, let's remove all of that nevertheless.
|
||||
@ -44,7 +44,7 @@ build() {
|
||||
|
||||
help() {
|
||||
cat <<HELPEOF
|
||||
This hook is responsible for creating the minimal kdump initramfs.
|
||||
Hook responsible for creating the kdumpst minimal kdump initramfs.
|
||||
HELPEOF
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
|
||||
#
|
||||
# Script for effectively collecting the core dump/dmesg from
|
||||
# within a minimal initrd - part of the kdump/pstore tooling.
|
||||
# within a minimal initrd - part of the kdumpst tooling.
|
||||
# The most fail-prone operations are guarded with conditionals to
|
||||
# bail in case we indeed fail - worst thing here would be to have
|
||||
# a bad condition and get stuck in this minimal initrd with no
|
||||
@ -26,13 +26,13 @@
|
||||
# files here, since we manually added them in the initrd and
|
||||
# the validation also happened there, during such addition,
|
||||
# hence not requiring checks here.
|
||||
for cfg in "/usr/share/kdump.d"/*; do
|
||||
for cfg in "/usr/share/kdumpst.d"/*; do
|
||||
. "$cfg"
|
||||
done
|
||||
|
||||
KDUMP_TIMESTAMP=$(date -u +"%Y%m%d%H%M")
|
||||
MOUNT_POINT="$(cat /usr/lib/kdump/kdump.mnt)"
|
||||
BASE_FOLDER="$(cat /usr/lib/kdump/kdump.dir)"
|
||||
MOUNT_POINT="$(cat /usr/lib/kdumpst/kdump.mnt)"
|
||||
BASE_FOLDER="$(cat /usr/lib/kdumpst/kdump.dir)"
|
||||
KDUMP_FOLDER="/kdump_path/${BASE_FOLDER}/crash/${KDUMP_TIMESTAMP}"
|
||||
|
||||
# Check if the device node exists - or else, just bails-out.
|
||||
|
||||
@ -5,13 +5,13 @@
|
||||
#
|
||||
|
||||
[Unit]
|
||||
Description=pstore/kdump loader boot-time service
|
||||
Description=kdumpst loader boot-time service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
StandardOutput=journal
|
||||
ExecStartPre=/usr/lib/kdump/kdump-load.sh load
|
||||
ExecStart=/usr/lib/kdump/save-dumps.sh
|
||||
ExecStartPre=/usr/lib/kdumpst/kdumpst-load.sh load
|
||||
ExecStart=/usr/lib/kdumpst/save-dumps.sh
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
@ -15,13 +15,13 @@ grub_update() {
|
||||
sed -i "${SED_ADD}" "${GRUB_CFG_FILE}"
|
||||
|
||||
if ! grub-mkconfig -o "${GRUB_BOOT_FILE}" 1>/dev/null; then
|
||||
logger "kdump: failed to execute command \"${GRUB_CMD}\""
|
||||
logger "kdumpst: failed to execute command \"${GRUB_CMD}\""
|
||||
exit 1
|
||||
fi
|
||||
sync "${GRUB_BOOT_FILE}" 2>/dev/null
|
||||
|
||||
logger "kdump: kexec won't succeed, no reserved memory in this boot..."
|
||||
logger "kdump: but we automatically set crashkernel for next boot."
|
||||
logger "kdumpst: kexec won't succeed, no reserved memory in this boot..."
|
||||
logger "kdumpst: but we automatically set crashkernel for next boot."
|
||||
exit 0 # this is considered a successful run
|
||||
fi
|
||||
|
||||
@ -29,12 +29,12 @@ grub_update() {
|
||||
sed -i "s/\"${GRUB_CMDLINE}/\"/g" "${GRUB_CFG_FILE}"
|
||||
|
||||
if ! grub-mkconfig -o "${GRUB_BOOT_FILE}" 1>/dev/null; then
|
||||
logger "kdump: failed to execute command \"${GRUB_CMD}\""
|
||||
logger "kdumpst: failed to execute command \"${GRUB_CMD}\""
|
||||
exit 1
|
||||
fi
|
||||
sync "${GRUB_BOOT_FILE}" 2>/dev/null
|
||||
|
||||
logger "kdump: cleared crashkernel memory previously set."
|
||||
logger "kdumpst: cleared crashkernel memory previously set."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@ -43,8 +43,8 @@ grub_update() {
|
||||
# via command-line call or in case initrd doesn't exist during kdump load.
|
||||
# It accounts for both mkinitcpio and dracut users.
|
||||
create_initrd() {
|
||||
/usr/lib/kdump/kdump-mkinitcpio-hook.sh "$(uname -r)"
|
||||
/usr/lib/kdump/kdump-dracut-hook.sh "$(uname -r)"
|
||||
/usr/lib/kdumpst/kdump-mkinitcpio-hook.sh "$(uname -r)"
|
||||
/usr/lib/kdumpst/kdump-dracut-hook.sh "$(uname -r)"
|
||||
}
|
||||
|
||||
# This routine performs a clean-up by deleting the old/useless remaining
|
||||
@ -62,7 +62,7 @@ cleanup_unused_initrd() {
|
||||
KVER="${FNAME#kdump-initrd-}"
|
||||
if ! grep -q "${KVER}" "${INSTALLED_KERNELS}" ; then
|
||||
rm -f "${MOUNT_FOLDER}/${FNAME}.img"
|
||||
logger "kdump: removed unused file \"${FNAME}.img\""
|
||||
logger "kdumpst: removed unused file \"${FNAME}.img\""
|
||||
fi
|
||||
done
|
||||
|
||||
@ -99,7 +99,7 @@ parse_ram_buffers() {
|
||||
usage() {
|
||||
cat <<EOF
|
||||
${0##*/} <COMMAND>
|
||||
Kdump/Pstore loader.
|
||||
kdumpst loader.
|
||||
|
||||
Options:
|
||||
load
|
||||
@ -114,9 +114,9 @@ EOF
|
||||
}
|
||||
|
||||
preamble() {
|
||||
load_kdump_config
|
||||
load_kdumpst_config
|
||||
|
||||
# In case the kdump main folder doesn't exist, create it
|
||||
# In case the kdumpst main folder doesn't exist, create it
|
||||
# here, as soon as possible.
|
||||
mkdir -p "${MOUNT_FOLDER}"
|
||||
}
|
||||
@ -160,12 +160,12 @@ if [ "${USE_PSTORE_RAM}" -eq 1 ]; then
|
||||
if [ "${MEM_SIZE}" -gt 0 ]; then
|
||||
if modprobe ramoops mem_address=0x"${MEM_START}" mem_size="${MEM_REQUIRED}" record_size="${RECORD_SIZE}"; then
|
||||
# If Pstore is set, update grub.cfg to avoid reserving crashkernel memory.
|
||||
logger "kdump: pstore-RAM was loaded successfully"
|
||||
logger "kdumpst: pstore-RAM was loaded successfully"
|
||||
cleanup_unused_initrd
|
||||
grub_update pstore
|
||||
exit 0
|
||||
fi
|
||||
logger "kdump: pstore-RAM load failed...will try kdump"
|
||||
logger "kdumpst: pstore-RAM load failed...will try kdump"
|
||||
fi
|
||||
# Fallback to kdump load - if we fail when configuring pstore, better
|
||||
# trying kdump; in case we have crashkernel memory reserved, lucky us.
|
||||
@ -191,7 +191,7 @@ VMLINUX="${VMLINUX#*BOOT_IMAGE=}"
|
||||
if [ ! -s "${VMLINUX}" ]; then
|
||||
VMLINUX="/boot/${VMLINUX}"
|
||||
if [ ! -s "${VMLINUX}" ]; then
|
||||
logger "kdump: couldn't find the kernel image"
|
||||
logger "kdumpst: couldn't find the kernel image"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@ -204,7 +204,7 @@ if [ ! -s "${INITRD_FNAME}" ]; then
|
||||
fi
|
||||
|
||||
if ! kexec -s -p "${VMLINUX}" --initrd "${INITRD_FNAME}" --append="${KDUMP_CMDLINE}"; then
|
||||
logger "kdump: kexec load failed"
|
||||
logger "kdumpst: kexec load failed"
|
||||
exit 1
|
||||
fi
|
||||
logger "kdump: panic kexec loaded successfully"
|
||||
logger "kdumpst: panic kexec loaded successfully"
|
||||
@ -6,6 +6,7 @@ set -uo pipefail
|
||||
# Copyright (c) 2021 Valve.
|
||||
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
|
||||
#
|
||||
# This is the kdump/pstore log collector; this script prepares the
|
||||
# collected data and save it in the local disk, in the next successful boot.
|
||||
# This is the kdumpst log collector; this script prepares the
|
||||
# collected data and save it in the local disk, in the first
|
||||
# successful boot after the panic.
|
||||
#
|
||||
|
||||
@ -1,20 +1,19 @@
|
||||
load_kdump_config
|
||||
load_kdumpst_config
|
||||
|
||||
MAIN_FOLDER="${MOUNT_FOLDER}"
|
||||
|
||||
if [ ! -d "${MAIN_FOLDER}" ]; then
|
||||
logger "kdump: invalid folder (${MAIN_FOLDER}) - aborting..."
|
||||
logger "kdumpst: invalid folder (${MAIN_FOLDER}) - aborting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Use UTC timezone to match kdump collection
|
||||
CURRENT_TSTAMP=$(date -u +"%Y%m%d%H%M")
|
||||
KDUMP_TMP_FOLDER="${MAIN_FOLDER}/.tmp"
|
||||
KDUMPST_TMP_FOLDER="${MAIN_FOLDER}/.tmp"
|
||||
|
||||
# By default, pstore is mounted in this location; if it isn't, we move on.
|
||||
# Notice we currently only support the logs generated by the ramoops backend.
|
||||
LOGS_FOUND=0
|
||||
PSTORE_FOLDER="${KDUMP_TMP_FOLDER}/pstore"
|
||||
PSTORE_FOLDER="${KDUMPST_TMP_FOLDER}/pstore"
|
||||
|
||||
while IFS= read -r log
|
||||
do
|
||||
@ -31,7 +30,7 @@ done <<< "$(find /sys/fs/pstore/ -type f 2>/dev/null)"
|
||||
|
||||
if [ "${LOGS_FOUND}" -gt 0 ]; then
|
||||
# Logs should live on <...>/.tmp folder, due to the zip compression.
|
||||
mv "${PSTORE_FOLDER}"/* "${KDUMP_TMP_FOLDER}/" 2>/dev/null
|
||||
mv "${PSTORE_FOLDER}"/* "${KDUMPST_TMP_FOLDER}/" 2>/dev/null
|
||||
rm -rf "${PSTORE_FOLDER}"
|
||||
fi
|
||||
|
||||
@ -48,7 +47,7 @@ do
|
||||
continue
|
||||
fi
|
||||
|
||||
KD_FOLDER="${KDUMP_TMP_FOLDER}/kdump"
|
||||
KD_FOLDER="${KDUMPST_TMP_FOLDER}/kdump"
|
||||
mkdir -p "${KD_FOLDER}"
|
||||
|
||||
if [ -s "${crash}/dmesg.txt" ]; then
|
||||
@ -71,7 +70,7 @@ done <<< "$(find "${KDUMP_CRASH_FOLDER}"/ -mindepth 1 -type d 2>/dev/null)"
|
||||
|
||||
if [ "${CRASHES_FOUND}" -gt 0 ]; then
|
||||
# Logs should live on .tmp folder, due to the zip compression.
|
||||
mv "${KD_FOLDER}"/* "${KDUMP_TMP_FOLDER}/" 2>/dev/null
|
||||
mv "${KD_FOLDER}"/* "${KDUMPST_TMP_FOLDER}/" 2>/dev/null
|
||||
rm -rf "${KD_FOLDER}"
|
||||
LOGS_FOUND=$((LOGS_FOUND + CRASHES_FOUND))
|
||||
fi
|
||||
@ -84,30 +83,30 @@ if [ "${LOGS_FOUND}" -ne 0 ]; then
|
||||
mkdir -p "${LOGS_FOLDER}"
|
||||
|
||||
# First we collect some more info, like DMI data, os-release, etc;
|
||||
DMI_FNAME="${KDUMP_TMP_FOLDER}/dmidecode.${CURRENT_TSTAMP}"
|
||||
DMI_FNAME="${KDUMPST_TMP_FOLDER}/dmidecode.${CURRENT_TSTAMP}"
|
||||
dmidecode > "${DMI_FNAME}"
|
||||
|
||||
BUILD_FNAME="${KDUMP_TMP_FOLDER}/build.${CURRENT_TSTAMP}"
|
||||
BUILD_FNAME="${KDUMPST_TMP_FOLDER}/build.${CURRENT_TSTAMP}"
|
||||
cp "/etc/os-release" "${BUILD_FNAME}"
|
||||
|
||||
VERSION_FNAME="${KDUMP_TMP_FOLDER}/version.${CURRENT_TSTAMP}"
|
||||
VERSION_FNAME="${KDUMPST_TMP_FOLDER}/version.${CURRENT_TSTAMP}"
|
||||
uname -r > "${VERSION_FNAME}"
|
||||
|
||||
sync "${DMI_FNAME}" "${BUILD_FNAME}" "${VERSION_FNAME}"
|
||||
|
||||
# Create the dump compressed pack.
|
||||
LOG_FNAME="kdump-${CURRENT_TSTAMP}.zip"
|
||||
LOG_FNAME="kdumpst-${CURRENT_TSTAMP}.zip"
|
||||
LOG_FNAME="${LOGS_FOLDER}/${LOG_FNAME}"
|
||||
zip -9 -jq "${LOG_FNAME}" "${KDUMP_TMP_FOLDER}"/* 1>/dev/null
|
||||
zip -9 -jq "${LOG_FNAME}" "${KDUMPST_TMP_FOLDER}"/* 1>/dev/null
|
||||
|
||||
sync "${LOG_FNAME}" 2>/dev/null
|
||||
if [ ! -s "${LOG_FNAME}" ]; then
|
||||
logger "kdump: couldn't create the compressed log archive"
|
||||
logger "kdump: check folder \"${KDUMP_TMP_FOLDER}\" for logs"
|
||||
logger "kdumpst: couldn't create the compressed log archive"
|
||||
logger "kdumpst: check folder \"${KDUMPST_TMP_FOLDER}\" for logs"
|
||||
exit 0
|
||||
else
|
||||
logger "kdump: logs saved in \"${LOGS_FOLDER}\""
|
||||
logger "kdumpst: logs saved in \"${LOGS_FOLDER}\""
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -rf "${KDUMP_TMP_FOLDER}"
|
||||
rm -rf "${KDUMPST_TMP_FOLDER}"
|
||||
|
||||
Reference in New Issue
Block a user