From 9ace072a507a2545e96e6267ba82d5a007ddf941 Mon Sep 17 00:00:00 2001 From: thomas Date: Tue, 2 Nov 2021 18:23:09 +0100 Subject: [PATCH] crashkernel: check if crashmemory is available If a kernel was started with crashmemory enabled, create /node/startup-crashmemory/available. This in turn will allow a conditional startup of the startup-crashmemory.service. --- crashkernel/crashkernel.service | 5 ++++- crashkernel/startup-crashmemory | 21 +++++++++++++++++++++ crashkernel/startup-crashmemory.service | 6 ++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100755 crashkernel/startup-crashmemory create mode 100644 crashkernel/startup-crashmemory.service diff --git a/crashkernel/crashkernel.service b/crashkernel/crashkernel.service index fc7ec4b..2a2cf4c 100644 --- a/crashkernel/crashkernel.service +++ b/crashkernel/crashkernel.service @@ -1,5 +1,8 @@ [Unit] -Description=load crashkernel +Description=load crashkernel if enabled +Wants=startup-crashmemory.service +After=startup-crashmemory.service +ConditionPathExists=/node/startup-crashmemory/available ConditionPathExists=/boot/bzImage.crash [Service] diff --git a/crashkernel/startup-crashmemory b/crashkernel/startup-crashmemory new file mode 100755 index 0000000..8ba5f2c --- /dev/null +++ b/crashkernel/startup-crashmemory @@ -0,0 +1,21 @@ +#! /bin/sh + +# Workaround for systemd versions missing certain ConditionXY= features. +# This helper is called by startup-crashmemory.service and creates +# /node/startup-crashmemory/available +# So other services can use +# Wants=startup-crashmemory.service +# After=startup-crashmemory.service +# ConditionPathExists=/node/startup-crashmemory/available +# to start a unit only if the memory can be used +# + +kexec_crash_size='0' +if [ -e /sys/kernel/kexec_crash_size ]; then + kexec_crash_size=$(cat /sys/kernel/kexec_crash_size) +fi +mkdir -p /node/startup-crashmemory +rm /node/startup-crashmemory/* 2>/dev/null +if [ "$kexec_crash_size" != "0" ] ; then + touch /node/startup-crashmemory/available +fi diff --git a/crashkernel/startup-crashmemory.service b/crashkernel/startup-crashmemory.service new file mode 100644 index 0000000..9f289c1 --- /dev/null +++ b/crashkernel/startup-crashmemory.service @@ -0,0 +1,6 @@ +[Unit] + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/sbin/startup-crashmemory