Files
security-misc/usr/libexec/security-misc/cold-boot-attack-defense-kexec-prepare
Patrick Schleizer c3a822af0e test if readable
2023-01-07 15:09:25 -05:00

42 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
## Copyright (C) 2023 - 2023 ENCRYPTED SUPPORT LP <adrelanos@whonix.org>
## Copyright (C) 2023 - 2023 Friedrich Doku <friedrichdoku@gmail.com>
## See the file COPYING for copying conditions.
set -x
set -e
# Get the kernel command-line arguments
cmdline=$(cat /proc/cmdline)
# Get the current boot image
kernel=$(echo "$cmdline" | grep -o 'BOOT_IMAGE=\S*' | cut -d '=' -f 2)
initrd=$(echo "$kernel" | sed "s#vmlinuz#initrd.img#")
if ! test -r "$initrd"; then
echo "$0: ERROR: Initrd File '$initrd' not found or not readable!"
exit 1
fi
if ! test -r "$kernel"; then
echo "$0: ERROR: Kernel File '$kernel' not found or not readable!"
exit 1
fi
if systemctl list-jobs | grep "poweroff.target" | grep -q "start"; then
wiperamexit="yes"
wiperamaction="poweroff"
elif systemctl list-jobs | grep "reboot.target" | grep -q "start"; then
wiperamexit="yes"
wiperamaction="reboot"
elif systemctl list-jobs | grep "halt.target" | grep -q "start"; then
wiperamexit="yes"
wiperamaction="halt"
else
echo "$0: ERROR: No shutdown option found!"
exit 0
fi
kexec -l "$kernel" --initrd="$initrd" --reuse-cmdline --append="wiperamexit=$wiperamexit wiperamaction=$wiperamaction"