This is somewhat a big refactor. The early design of kdump/pstore was meant to support the A/B scheme of Steam Deck and a dracut-based initrd only. In this scheme, we had a DEVNODE (like nvme partition or a devlink) that represented the device node to be mounted early in boot when kdump was in use. Also, we had a folder defined in the config file on top of such dev node, and a temporary file used to "carry" the composition of the full kdump path across boot time scripts. Yeah, kinda complex setup. We are now moving to a more generic approach, and for that, the design choice was a more convenient/simple one for the common cases, that requires some operations to properly work on SteamOS dracut-based initrd. Now we have only a single path on config file, which should be accessible in a R/W filesystem by both scripts executed in the systemd service. No devnode information or temp file is used anymore. But with that, comes the need of discovering the proper devnode and base folder for kdump'ing early in boot, from the initrd. Using the findmnt tool we manage to derive all the necessary data during the initrd preparation phase. Also, while at it we manage to fix an "inconsistency" of our dracut initrd creation script: installkernel() should be responsible to deal with DRM modules removal, not install(). On top of this (already big) change, now our dracut initrd excludes not only amdgpu driver/FWs, but radeon, nvidia and i915 as well. And due to our refactor of the mount point information (using findmnt to collect info during dracut initrd creation), we also allow now arbitrary filesystem drivers to be included, i.e., we don't hardcode/limit for ext4 only. Again, mea culpa for not splitting this in multiple atomic/simple commits, the burden to keep a pretty git log is starting to consume precious time. Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
59 lines
2.5 KiB
Bash
59 lines
2.5 KiB
Bash
#!/bin/sh
|
|
#
|
|
# SPDX-License-Identifier: LGPL-2.1+
|
|
#
|
|
# Copyright (c) 2021 Valve
|
|
# Maintainer: Guilherme G. Piccoli <gpiccoli@igalia.com>
|
|
#
|
|
# 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 initrd
|
|
#
|
|
#
|
|
# Pstore-RAM settings
|
|
# If USE_PSTORE_RAM is set to 1, 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
|
|
# PSTORE_MEM_AMOUNT (decimal, in MB) in size. Also, kernel must be able to
|
|
# allocate a contiguous memory amount of PSTORE_RECORD_SZ (decimal, MB).
|
|
USE_PSTORE_RAM=1
|
|
PSTORE_MEM_AMOUNT=5242880
|
|
PSTORE_RECORD_SZ=2097152
|
|
#
|
|
#
|
|
# Mount-related options
|
|
# since the link is not present so early in the system boot. MOUNT_FOLDER
|
|
# MOUNT_FOLDER is the the place in which both pstore and kdump logs will
|
|
# 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="/home/.steamos/offload/var/kdump"
|
|
#
|
|
#
|
|
# Kdump controlling settings
|
|
# Currently we only do local storage log collection (no network/iscsi dumps).
|
|
# If FULL_COREDUMP is !=0, we collect a full compressed vmcore, which might
|
|
# require a lot of disk space. The MAKEDUMPFILE_*_CMD settings refer to
|
|
# tunings on makedumpfile - we rely on zstd compression and maximum page
|
|
# exclusion for the full vmcore, mimic'ing Debian/Ubuntu kdump.
|
|
FULL_COREDUMP=0
|
|
MAKEDUMPFILE_COREDUMP_CMD="-z -d 31"
|
|
MAKEDUMPFILE_DMESG_CMD="--dump-dmesg"
|
|
#
|
|
#
|
|
# GRUB-related settings
|
|
# GRUB_AUTOSET determines if the pstore/kdump tooling 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
|
|
# grub.cfg file - this is used in the config update step plus for syncing
|
|
# purposes. GRUB_CFG_FILE is the config file we edit in order to add/remove
|
|
# the crashkernel parameter. Finally, GRUB_CMDLINE holds the change to be
|
|
# made in the grub config file, specially the crashkernel memory reservation
|
|
# (notice that a trailing space is required in this line, so we avoid
|
|
# messing with other kernel parameters).
|
|
GRUB_AUTOSET=1
|
|
GRUB_BOOT_FILE="/efi/EFI/steamos/grub.cfg"
|
|
GRUB_CFG_FILE="/etc/default/grub"
|
|
GRUB_CMDLINE="crashkernel=256M crash_kexec_post_notifiers "
|