Files
kdumpst/kdump.etc
Guilherme G. Piccoli 725d6d7149 kdump: Refactor devnode setting / derivation
Thanks to Emil (@xexaxo) suggestion, we hereby implement a less fragile
way of obtaining the "/home" mount point. Emil suggested that instead of
using device name directly, we could use the generic link, as in:
"/dev/disk/by-partsets/shared/home".

In principle the change would be simple, but it proved to be a bit tricky
due to the early boot stage kdump executes - in such point we don't have
this link available, so we need to rely in the full device name directly
on kdump collection. We achieve that by saving this information in the
kdump initrd - this is not completely safe, see the CAVEAT below.

Also, we improved kdump loading script by using "findmnt", a less
fragile / more elegant way of getting the "/home" mount point.

CAVEAT: NVMe multipathing introduced a "randomness" level to device
naming on Linux, so "nvme0n1" could be "nvme1n1" in some boots, if we
have more than one device. There is a kernel parameter to avoid that
("nvme_core.multipath=0"), see [0] for more information.
Due to this reason, we could in theory have different NVMe device
names between regular kernel boot and the kdump one, hence causing a
failure in kdump collection.
But this is pretty much safe since we don't have multiple NVMe
devices, also we could disable multipath in kernel config
(CONFIG_NVME_MULTIPATH) or use the above cmdline.

[0] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1792660/

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

52 lines
2.3 KiB
Bash

#!/bin/sh
#
# SPDX-License-Identifier: LGPL-2.1+
#
# Copyright (c) 2021 Valve
#
# Configuration settings for SteamOS kdump. After _any_ change in this
# file, it's required to create the kdump minimal initramfs by running:
# /usr/lib/kdump/kdump-load.sh initrd
#
# Mount-related options - the DEVNODE points to the /home directory link;
# this is used to derive the numerical devnode for kdump, since the link
# is not present so early in the system boot. The KDUMP_FOLDER will be
# created if doesn't exist. The KDUMP_MNT is just a temporary file that
# carries the mounted folder path across boot-time scripts.
MOUNT_DEVNODE="/dev/disk/by-partsets/shared/home"
KDUMP_FOLDER="/.steamos/offload/var/kdump"
KDUMP_MNT="/tmp/kdump.mnt"
# Kdump controlling settings - for now we don't have network/iscsi dumps, only
# local storage dumps. If FULL_COREDUMP is !=0, we collect a full compressed
# vmcore, which might require a lot of disk space. The *_CMD settings refer
# to tunings on makedumpfile - we rely on zstd compression and maximum page
# exclusion for the full vmcore, mimic'ing Debian kdump. Finally, GRUB_AUTOSET
# determines if kdump-steamos 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).
FULL_COREDUMP=0
MAKEDUMPFILE_COREDUMP_CMD="-z -d 31"
MAKEDUMPFILE_DMESG_CMD="--dump-dmesg"
GRUB_AUTOSET=1
# Pstore-RAM setting - if enabled, Kdump won't be loaded, instead the Pstore
# RAM backend will be configured. In order to have success, this operation
# relies in having an available RAM buffer on /proc/iomem with at least 5MiB
# in size.
USE_PSTORE_RAM=1
# By default, collected logs are submitted automatically to Valve servers.
# Setting LOG_SUBMISSION to '0' will disable this behavior; but notice that
# even with the log submission disabled, the logs are saved locally.
LOG_SUBMISSION=1
# Below some log submission settings, based on Steam config files and Valve
# URLs. These settings *should not* be changed, or else the log sending
# mechanism will be impaired.
LOGINVDF="/home/doorstop/.local/share/Steam/config/loginusers.vdf"
POST_URL="https://api.steampowered.com/ICrashReportService/ACTIONCrashUpload/v1"