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>
59 lines
1.6 KiB
Bash
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
|