BLACKSITE
:
216.73.216.180
:
66.116.205.193 / voltgrid.co.in
:
Linux 66-116-205-193.webhostbox.net 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
:
/
lib
/
kdump
/
Upload File:
files >> //lib/kdump/kdump-lib-initramfs.sh
#!/usr/bin/sh # # The code in this file will be used in initramfs environment, bash may # not be the default shell. Any code added must be POSIX compliant. DEFAULT_PATH="/var/crash/" KDUMP_CONFIG_FILE="/etc/kdump.conf" FENCE_KDUMP_CONFIG_FILE="/etc/sysconfig/fence_kdump" FENCE_KDUMP_SEND="/usr/libexec/fence_kdump_send" LVM_CONF="/etc/lvm/lvm.conf" # shellcheck disable=SC2034 LUKS_CONFIGFS=/sys/kernel/config/crash_dm_crypt_keys # shellcheck disable=SC2034 LUKS_KEY_PRFIX="kdump-cryptsetup:vk-" # Read kdump config in well formated style kdump_read_conf() { kdump_get_conf_val "" } # Retrieves config value defined in kdump.conf # $1: config name, if empty print full config kdump_get_conf_val() { _to_find="$1" _found="" [ -f "$KDUMP_CONFIG_FILE" ] || return # On lines that are _not_ comments or empty remove... # Note: The additional braces {} are required as piping into a while # loop creates a sub-shell. So without the braces $_found would only be # set inside the loop but empty outside of it. grep -Ev -e '^\s*#' -e '^\s*$' "$KDUMP_CONFIG_FILE" | { while read -r _opt _val; do # ...trailing comments... case "$_val" in *\#*) _val="${_val%%#*}" _val="${_val%"${_val##*[![:space:]]}"}" ;; esac # ...quotes case "$_val" in \"*\") _val="${_val#\"}" _val="${_val%\"}" ;; esac if [ -z "$_to_find" ]; then echo "$_opt $_val" elif echo "$_opt" | grep -q -E "^($_to_find)$"; then # make sure to only return the last match to # mirror the old behavior _found="$_val" fi done [ -n "$_found" ] && echo "$_found" } # make sure we return 0 even when a option isn't set return 0 } is_mounted() { findmnt -k -n "$1" > /dev/null 2>&1 } # $1: info type # $2: mount source type # $3: mount source # $4: extra args get_mount_info() { __kdump_mnt=$(findmnt -k -n -r -o "$1" "--$2" "$3" $4) [ -z "$__kdump_mnt" ] && [ -e "/etc/fstab" ] && __kdump_mnt=$(findmnt -s -n -r -o "$1" "--$2" "$3" $4) echo "$__kdump_mnt" } is_ipv6_address() { echo "$1" | grep -q ":" } is_fs_type_nfs() { [ "$1" = "nfs" ] || [ "$1" = "nfs4" ] } is_fs_type_virtiofs() { [ "$1" = "virtiofs" ] } # If $1 contains dracut_args "--mount", return <filesystem type> get_dracut_args_fstype() { echo $1 | grep "\-\-mount" | sed "s/.*--mount .\(.*\)/\1/" | cut -d' ' -f3 } # If $1 contains dracut_args "--mount", return <device> get_dracut_args_target() { echo $1 | grep "\-\-mount" | sed "s/.*--mount .\(.*\)/\1/" | cut -d' ' -f1 } get_save_path() { __kdump_path=$(kdump_get_conf_val path) [ -z "$__kdump_path" ] && __kdump_path=$DEFAULT_PATH # strip the duplicated "/" echo "$__kdump_path" | tr -s / } get_root_fs_device() { findmnt -k -f -n -o SOURCE / } # Return the current underlying device of a path, ignore bind mounts get_target_from_path() { __kdump_target=$(df "$1" 2> /dev/null | tail -1 | awk '{print $1}') [ "$__kdump_target" = "/dev/root" ] && [ ! -e /dev/root ] && __kdump_target=$(get_root_fs_device) echo "$__kdump_target" } get_fs_type_from_target() { get_mount_info FSTYPE source "$1" -f } get_mntpoint_from_target() { local _mntpoint # get the first TARGET when SOURCE doesn't end with ]. # In most cases, a SOURCE ends with ] when fsroot or subvol exists. _mntpoint=$(get_mount_info TARGET,SOURCE source "$1" | grep -v "\]$" | awk 'NR==1 { print $1 }') # fallback to the old way when _mntpoint is empty. [[ -n "$_mntpoint" ]] || _mntpoint=$(get_mount_info TARGET source "$1" -f ) echo $_mntpoint } is_ssh_dump_target() { kdump_get_conf_val ssh | grep -q @ } is_raw_dump_target() { [ -n "$(kdump_get_conf_val raw)" ] } is_virtiofs_dump_target() { if [ -n "$(kdump_get_conf_val virtiofs)" ]; then return 0 fi if is_fs_type_virtiofs "$(get_dracut_args_fstype "$(kdump_get_conf_val dracut_args)")"; then return 0 fi if is_fs_type_virtiofs "$(get_fs_type_from_target "$(get_target_from_path "$(get_save_path)")")"; then return 0 fi return 1 } is_nfs_dump_target() { if [ -n "$(kdump_get_conf_val nfs)" ]; then return 0 fi if is_fs_type_nfs "$(get_dracut_args_fstype "$(kdump_get_conf_val dracut_args)")"; then return 0 fi if is_fs_type_nfs "$(get_fs_type_from_target "$(get_target_from_path "$(get_save_path)")")"; then return 0 fi return 1 } fs_dump_target() { kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|virtiofs" } is_fs_dump_target() { [ -n "$(fs_dump_target)" ] } is_lvm2_thinp_device() { _device_path=$1 _lvm2_thin_device=$(lvm lvs -S 'lv_layout=sparse && lv_layout=thin' \ --nosuffix --noheadings -o vg_name,lv_name "$_device_path" 2> /dev/null) [ -n "$_lvm2_thin_device" ] } kdump_get_ip_route() { if ! _route=$(/sbin/ip -o route get to "$1" 2>&1); then exit 1 fi echo "$_route" } kdump_get_ip_route_field() { echo "$1" | sed -n -e "s/^.*\<$2\>\s\+\(\S\+\).*$/\1/p" }