Initial version of SteamOS kdump

Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
This commit is contained in:
Guilherme G. Piccoli
2023-03-31 15:34:26 -03:00
commit b75c91c98c
10 changed files with 316 additions and 0 deletions

45
kdump_collect.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/sh
#
# SPDX-License-Identifier: LGPL-2.1+
#
# Copyright (c) 2021 Valve.
#
# Kdump script that should effectively collect the core dump/dmesg from
# within a Dracut-generated initramfs on SteamOS kdump.
# 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 initramfs with no output for the user.
#
. /usr/lib/kdump/kdump.etc
VMCORE="/proc/vmcore"
KDUMP_TIMESTAMP=$(date +"%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
mkdir -p "/kdump_path"
if ! mount "/dev/${MOUNT_DEVNODE}" /kdump_path; then
reboot -f
fi
mkdir -p "${KDUMP_FOLDER}"
/usr/lib/kdump/makedumpfile ${MAKEDUMPFILE_DMESG_CMD} $VMCORE "${KDUMP_FOLDER}/dmesg.txt"
sync "${KDUMP_FOLDER}/dmesg.txt"
if [ ${FULL_COREDUMP} -ne 0 ]; then
/usr/lib/kdump/makedumpfile ${MAKEDUMPFILE_COREDUMP_CMD} $VMCORE "${KDUMP_FOLDER}/vmcore.compressed"
sync "${KDUMP_FOLDER}/vmcore.compressed"
fi
umount "/dev/${MOUNT_DEVNODE}"
sync
reboot -f