Files
kdumpst/kdump-collect.sh
Guilherme G. Piccoli 184217373b all: Allow multiple config files
This is somewhat an intrusive change, but necessary if we want
to upstream the kdump tooling while allowing great extent of
customizations on SteamOS.

With this change, we have now a kdump.d folder on /usr/share,
that holds configuration files in the same way sysctl.d does.
In other words, we can easily override default settings by
just having more configuration files, which are sourced
following natural name sorting, i.e., we have now the concept
of config file precedence in kdump.

Our default config file is called 00-default, so we eventually
might have a 01-steamos e.g., with Deck's custom settings.
This is planned to other package though.

Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
2023-03-31 15:34:42 -03:00

59 lines
1.6 KiB
Bash

#!/bin/sh
#
# SPDX-License-Identifier: LGPL-2.1+
#
# Copyright (c) 2021 Valve.
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
#
# Script for effectively collecting the core dump/dmesg from
# within a minimal initrd - part of kdump/pstore 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
# output for the user.
#
# We have a more controlled situation with regards the config
# files here, since we manually added them in the initrd and
# the validation also happened there, during such addition,
# hence not requiring checking here.
for cfg in "/usr/lib/kdump/conf/"/*; do
. "$cfg"
done
VMCORE="/proc/vmcore"
KDUMP_TIMESTAMP=$(date -u +"%Y%m%d%H%M")
KDUMP_FOLDER="/kdump_path/${KDUMP_FOLDER}/crash/${KDUMP_TIMESTAMP}"
# Bail out in case we don't have a vmcore, i.e. either we're not kdumping
# or something is pretty wrong and we wouldn't be able to progress.
#
if [ ! -f $VMCORE ]; then
reboot -f
fi
DEVN="$(cat /usr/lib/kdump/kdump.devnode)"
mkdir -p "/kdump_path"
if ! mount "${DEVN}" /kdump_path; then
reboot -f
fi
mkdir -p "${KDUMP_FOLDER}"
# we want to split on spaces, it's a set of parameters!
# shellcheck disable=SC2086
/usr/bin/makedumpfile ${MAKEDUMPFILE_DMESG_CMD} $VMCORE "${KDUMP_FOLDER}/dmesg.txt"
sync "${KDUMP_FOLDER}/dmesg.txt"
if [ "${FULL_COREDUMP}" -ne 0 ]; then
# shellcheck disable=SC2086
/usr/bin/makedumpfile ${MAKEDUMPFILE_COREDUMP_CMD} $VMCORE "${KDUMP_FOLDER}/vmcore.compressed"
sync "${KDUMP_FOLDER}/vmcore.compressed"
fi
umount "${DEVN}"
sync
reboot -f