#!/bin/bash USE_KDUMP="no" if [ $# -eq 0 ]; then # CPU/RAM Criteria MIN_CPU_THREADS=4 MIN_MEMORY_GB=6 MAX_MEMORY_GB=2048 # Get current CPU threads and RAM available CPU_THREADS=$(grep -c processor /proc/cpuinfo) RAM_GB=$(grep MemTotal /proc/meminfo | awk '{print int($2 / 1024 / 1024)}') SWAP_GB=$(grep SwapTotal /proc/meminfo | awk '{print int($2 / 1024 / 1024)}') MEMORY_GB=$((RAM_GB+SWAP_GB)) # CPU Architecture Criteria CPU_ARCHES_SUPPORTED=( "x86_64" "aarch64" "s390x") # Get CPU architecture CPU_ARCH=$(uname -m) # Calculate minimum free space in /var and current free space in /var VAR_FREE_SPACE_MULTIPLE=5 MIN_VAR_FREE_GB=$((VAR_FREE_SPACE_MULTIPLE*MEMORY_GB)) VAR_FREE_GB=$(df --output=avail -BG /var | tail -n 1 | sed 's/[^0-9]*$//') # No arguments. Determine if we meet criteria to enable by default echo "KDump Default Enablement Criteria: CPU Architectures: ${CPU_ARCHES_SUPPORTED[*]}, CPU Threads >= $MIN_CPU_THREADS, RAM/Swap: $MIN_MEMORY_GB-$MAX_MEMORY_GB GB, Free Space in /var >= ${VAR_FREE_SPACE_MULTIPLE}x RAM/Swap ($MIN_VAR_FREE_GB GB)" echo -n "Hardware Found: CPU Architecture: $CPU_ARCH, CPU Threads: $CPU_THREADS, Memory: " if [ "$MEMORY_GB" -lt 1 ]; then echo -n "<1" else echo -n "$MEMORY_GB" fi echo -n " GB, Free space in /var: " if [ "$VAR_FREE_GB" -lt 1 ]; then echo -n "<1" else echo -n "$VAR_FREE_GB" echo " GB" fi if [ "$CPU_THREADS" -ge "$MIN_CPU_THREADS" ] \ && [ "$MEMORY_GB" -ge "$MIN_MEMORY_GB" ] \ && [ "$MEMORY_GB" -le "$MAX_MEMORY_GB" ] \ && [ "$VAR_FREE_GB" -gt "$MIN_VAR_FREE_GB" ] \ && [ "$(echo "${CPU_ARCHES_SUPPORTED[*]}" | grep -ow "$CPU_ARCH" | wc -w)" -gt 0 ]; then USE_KDUMP="yes" else USE_KDUMP="no" fi elif [ "$1" = "true" ]; then # Use argument to enable USE_KDUMP="yes" elif [ "$1" = "false" ]; then # Use argument to disable USE_KDUMP="no" fi if [ "$USE_KDUMP" = "yes" ]; then echo "KDump will be enabled." else echo "KDump will be disabled." fi EDITOR="sed -Ei 's|^(kdump-tools/use_kdump)=.+|\1=\"$USE_KDUMP\"|'" dpkg-reconfigure -f editor kdump-tools