V8.00.000.2025.06.17

Signed-off-by: Marc S. Weidner <msw@coresecret.dev>
This commit is contained in:
2025-08-08 09:55:15 +02:00
parent 0657155d20
commit 7e1345c7ec
3 changed files with 60 additions and 24 deletions

View File

@@ -22,7 +22,7 @@ guard_sourcing
####################################### #######################################
# Wrapper for executing commands in the desired chroot environment. # Wrapper for executing commands in the desired chroot environment.
# Globals: # Globals:
# ERR_CHRT_COMMAND # BASH_SOURCE
# TERM # TERM
# Arguments: # Arguments:
# 1: Target of the chroot environment. # 1: Target of the chroot environment.
@@ -35,6 +35,7 @@ do_in_target() {
declare var_chroot_target="$1"; shift declare var_chroot_target="$1"; shift
declare -a ary_chroot_command=("$@") declare -a ary_chroot_command=("$@")
declare -r var_default_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" declare -r var_default_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare var_mod="${BASH_SOURCE[1]##*/}"; var_mod="${var_mod%%_*}()"
if (( ${#ary_chroot_command[@]} == 0 )); then if (( ${#ary_chroot_command[@]} == 0 )); then
@@ -63,12 +64,12 @@ do_in_target() {
then then
do_log "emergency" "file_only" "1080() Command: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none ${ary_chroot_command[*]}] failed." do_log "emergency" "file_only" "1080() Command of [${var_mod}]: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none ${ary_chroot_command[*]}] failed."
return "${ERR_CHRT_COMMAND}" return "${ERR_CHRT_COMMAND}"
else else
do_log "info" "file_only" "1080() Command: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none ${ary_chroot_command[*]}] successful." do_log "info" "file_only" "1080() Command of [${var_mod}]: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none ${ary_chroot_command[*]}] successful."
return 0 return 0
fi fi
@@ -78,9 +79,8 @@ do_in_target() {
# Execute a full shell script line inside the chroot via bash -c. # Execute a full shell script line inside the chroot via bash -c.
# TODO: Supports interactive debug shell on error. # TODO: Supports interactive debug shell on error.
# Globals: # Globals:
# ERR_CHRT_COMMAND # BASH_SOURCE
# TERM # TERM
# DEBUG_INTERACTIVE (optional boolean)
# Arguments: # Arguments:
# 1: Target of the chroot environment # 1: Target of the chroot environment
# 2: Command string to execute inside a shell (quoted) # 2: Command string to execute inside a shell (quoted)
@@ -94,6 +94,7 @@ do_in_target_script() {
declare var_chroot_script="$2" declare var_chroot_script="$2"
declare var_log_level_on_error="${3:-emergency}" declare var_log_level_on_error="${3:-emergency}"
declare -r var_default_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" declare -r var_default_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare var_mod="${BASH_SOURCE[1]##*/}"; var_mod="${var_mod%%_*}()"
if [[ -z "${var_chroot_script}" ]]; then if [[ -z "${var_chroot_script}" ]]; then
@@ -114,7 +115,7 @@ do_in_target_script() {
then then
do_log "${var_log_level_on_error}" "file_only" "1080() Command: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none /bin/bash -c ${var_chroot_script}] failed." do_log "${var_log_level_on_error}" "file_only" "1080() Command of [${var_mod}]: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none /bin/bash -c ${var_chroot_script}] failed."
return "${ERR_CHRT_COMMAND}" return "${ERR_CHRT_COMMAND}"
# TODO: Test with Dialog Wrapper in interactive mode. # TODO: Test with Dialog Wrapper in interactive mode.
@@ -126,7 +127,7 @@ do_in_target_script() {
else else
do_log "info" "file_only" "1080() Command: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none /bin/bash -c ${var_chroot_script}] successful." do_log "info" "file_only" "1080() Command of [${var_mod}]: [chroot ${var_chroot_target} /usr/bin/env -i HOME=/root PATH=${var_default_path} TERM=${TERM} LANG=C.UTF-8 LC_ALL=C.UTF-8 DEBIAN_FRONTEND=noninteractive APT_LISTCHANGES_FRONTEND=none /bin/bash -c ${var_chroot_script}] successful."
return 0 return 0
fi fi

View File

@@ -15,9 +15,6 @@
guard_sourcing guard_sourcing
### Variable to finish GRUB CMDLINE strings.
declare -grx VAR_H='"'
####################################### #######################################
# Helper module to extract the current GRUB CMDLINE strings. # Helper module to extract the current GRUB CMDLINE strings.
# Globals: # Globals:
@@ -52,30 +49,43 @@ old_grub_extract_current_string() {
# VV_GRUB_CMDLINE_LINUX_DEFAULT # VV_GRUB_CMDLINE_LINUX_DEFAULT
# Arguments: # Arguments:
# None # None
# Returns:
# 0: on success
####################################### #######################################
grub_extract_current_string() { grub_extract_current_string() {
### Declare Arrays, HashMaps, and Variables. ### Declare Arrays, HashMaps, and Variables.
declare -gx VAR_ORIG_GRUB_CMDLINE_LINUX="" VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT="" \ declare -gx VAR_ORIG_GRUB_CMDLINE_LINUX="" VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT="" \
VK_GRUB_CMDLINE_LINUX='' VK_GRUB_CMDLINE_LINUX_DEFAULT='' \ VK_GRUB_CMDLINE_LINUX='' VK_GRUB_CMDLINE_LINUX_DEFAULT='' \
VV_GRUB_CMDLINE_LINUX="" VV_GRUB_CMDLINE_LINUX_DEFAULT="" VV_GRUB_CMDLINE_LINUX="" VV_GRUB_CMDLINE_LINUX_DEFAULT=""
declare vv_raw_lin="" vv_raw_lin_def="" declare vv_raw_lin="" vv_raw_lin_def=""
### Original lines (retained, strictly anchored). ### Original lines (retained, strictly anchored).
VAR_ORIG_GRUB_CMDLINE_LINUX=$(grep -E '^GRUB_CMDLINE_LINUX=' "${TARGET}/etc/default/grub") VAR_ORIG_GRUB_CMDLINE_LINUX=$(grep -E '^GRUB_CMDLINE_LINUX=' "${TARGET}/etc/default/grub")
VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT=$(grep -E '^GRUB_CMDLINE_LINUX_DEFAULT=' "${TARGET}/etc/default/grub") VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT=$(grep -E '^GRUB_CMDLINE_LINUX_DEFAULT=' "${TARGET}/etc/default/grub")
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "1081() Value of VAR_ORIG_GRUB_CMDLINE_LINUX: [${VAR_ORIG_GRUB_CMDLINE_LINUX}]."
do_log "debug" "file_only" "1081() Value of VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT: [${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT}]."
# TODO REMOVE DEBUG LOGGER
### Keys (fixed prefixes). ### Keys (fixed prefixes).
VK_GRUB_CMDLINE_LINUX='GRUB_CMDLINE_LINUX=' VK_GRUB_CMDLINE_LINUX='GRUB_CMDLINE_LINUX='
VK_GRUB_CMDLINE_LINUX_DEFAULT='GRUB_CMDLINE_LINUX_DEFAULT=' VK_GRUB_CMDLINE_LINUX_DEFAULT='GRUB_CMDLINE_LINUX_DEFAULT='
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "1081() Value of VK_GRUB_CMDLINE_LINUX: [${VK_GRUB_CMDLINE_LINUX}]."
do_log "debug" "file_only" "1081() Value of VK_GRUB_CMDLINE_LINUX_DEFAULT: [${VK_GRUB_CMDLINE_LINUX_DEFAULT}]."
# TODO REMOVE DEBUG LOGGER
### Raw values (with quotes if necessary). ### Raw values (with quotes if necessary).
# shellcheck disable=SC2295 # shellcheck disable=SC2295
vv_raw_lin="${VAR_ORIG_GRUB_CMDLINE_LINUX#${VK_GRUB_CMDLINE_LINUX}}" vv_raw_lin="${VAR_ORIG_GRUB_CMDLINE_LINUX#${VK_GRUB_CMDLINE_LINUX}}"
# shellcheck disable=SC2295 # shellcheck disable=SC2295
vv_raw_lin_def="${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT#${VK_GRUB_CMDLINE_LINUX_DEFAULT}}" vv_raw_lin_def="${VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT#${VK_GRUB_CMDLINE_LINUX_DEFAULT}}"
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "1081() Value of vv_raw_lin: [${vv_raw_lin}]."
do_log "debug" "file_only" "1081() Value of vv_raw_lin_def: [${vv_raw_lin_def}]."
# TODO REMOVE DEBUG LOGGER
### Remove outer quotes symmetrically. ### Remove outer quotes symmetrically.
if [[ -n ${vv_raw_lin} ]]; then if [[ -n ${vv_raw_lin} ]]; then
@@ -114,8 +124,6 @@ grub_extract_current_string() {
VV_GRUB_CMDLINE_LINUX="${vv_raw_lin}" VV_GRUB_CMDLINE_LINUX="${vv_raw_lin}"
# shellcheck disable=SC2034 # shellcheck disable=SC2034
VV_GRUB_CMDLINE_LINUX_DEFAULT="${vv_raw_lin_def}" VV_GRUB_CMDLINE_LINUX_DEFAULT="${vv_raw_lin_def}"
return 0
} }
####################################### #######################################
@@ -130,8 +138,6 @@ grub_extract_current_string() {
# VV_GRUB_CMDLINE_LINUX_DEFAULT # VV_GRUB_CMDLINE_LINUX_DEFAULT
# Arguments: # Arguments:
# None # None
# Returns:
# 0 ...
####################################### #######################################
grub_finalize_string() { grub_finalize_string() {
### Declare Arrays, HashMaps, and Variables. ### Declare Arrays, HashMaps, and Variables.
@@ -141,6 +147,12 @@ grub_finalize_string() {
declare var_new_lin_def="${VK_GRUB_CMDLINE_LINUX_DEFAULT}'${VV_GRUB_CMDLINE_LINUX_DEFAULT}'" declare var_new_lin_def="${VK_GRUB_CMDLINE_LINUX_DEFAULT}'${VV_GRUB_CMDLINE_LINUX_DEFAULT}'"
declare -i var_found_lin=0 var_found_lin_def=0 var_line=0 i=0 declare -i var_found_lin=0 var_found_lin_def=0 var_line=0 i=0
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "1081() var_new_lin [${var_new_lin}]."
do_log "debug" "file_only" "1081() var_new_lin [${var_new_lin_def}]."
do_log "debug" "file_only" "1081() Before [mapfile -t ary_lines < ${var_file}]."
# TODO REMOVE DEBUG LOGGER
mapfile -t ary_lines < "${var_file}" mapfile -t ary_lines < "${var_file}"
### Replace lines strictly based on the key (including '='). ### Replace lines strictly based on the key (including '=').
@@ -148,6 +160,10 @@ grub_finalize_string() {
var_line=${ary_lines[i]} var_line=${ary_lines[i]}
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "1081() [Line '${i}': ${var_line}]."
# TODO REMOVE DEBUG LOGGER
case "${var_line}" in case "${var_line}" in
"${VK_GRUB_CMDLINE_LINUX}"*) "${VK_GRUB_CMDLINE_LINUX}"*)
@@ -181,7 +197,10 @@ grub_finalize_string() {
declare -gx VAR_GRUB_CMDLINE_LINUX="${var_new_lin}" declare -gx VAR_GRUB_CMDLINE_LINUX="${var_new_lin}"
declare -gx VAR_GRUB_CMDLINE_LINUX_DEFAULT="${var_new_lin_def}" declare -gx VAR_GRUB_CMDLINE_LINUX_DEFAULT="${var_new_lin_def}"
return 0 # TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "1081() VAR_GRUB_CMDLINE_LINUX [${VAR_GRUB_CMDLINE_LINUX}]."
do_log "debug" "file_only" "1081() VAR_GRUB_CMDLINE_LINUX_DEFAULT [${VAR_GRUB_CMDLINE_LINUX_DEFAULT}]."
# TODO REMOVE DEBUG LOGGER
} }

View File

@@ -37,10 +37,9 @@ update_grub_bootparameter() {
# TODO REMOVE DEBUG LOGGER # TODO REMOVE DEBUG LOGGER
# shellcheck disable=SC2153 # shellcheck disable=SC2153
do_log "debug" "tty" "4250() Value of GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]." do_log "debug" "file_only" "4250() Value of GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]."
# shellcheck disable=SC2153 # shellcheck disable=SC2153
do_log "debug" "tty" "4250() Value of GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]." do_log "debug" "file_only" "4250() Value of GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]."
sleep 5
# TODO REMOVE DEBUG LOGGER # TODO REMOVE DEBUG LOGGER
# shellcheck disable=SC2034 # shellcheck disable=SC2034
@@ -60,24 +59,41 @@ update_grub_bootparameter() {
done done
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "4250() Value of VV_GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]."
# TODO REMOVE DEBUG LOGGER
if [[ "${VAR_DROPBEAR}" == "true" ]]; then if [[ "${VAR_DROPBEAR}" == "true" ]]; then
var_label="${HMP_PATH_ENCLABEL["/"]}" var_label="${HMP_PATH_ENCLABEL["/"]}"
VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX:+${VV_GRUB_CMDLINE_LINUX} }cryptdevice=${VAR_CRYPT_ROOT}:cryptroot root=/dev/mapper/${var_label}" VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX:+${VV_GRUB_CMDLINE_LINUX} }cryptdevice=${VAR_CRYPT_ROOT}:cryptroot root=/dev/mapper/${var_label}"
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "4250() Value of VV_GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]."
# TODO REMOVE DEBUG LOGGER
fi fi
if [[ "${VAR_NUKE}" == "true" ]]; then if [[ "${VAR_NUKE}" == "true" ]]; then
var_nuke_string="nuke=${VAR_NUKE_HASH}" var_nuke_string="nuke=${VAR_NUKE_HASH}"
# shellcheck disable=SC2034 # shellcheck disable=SC2034
VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX} ${var_nuke_string}" VV_GRUB_CMDLINE_LINUX="${VV_GRUB_CMDLINE_LINUX} ${var_nuke_string}"
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "4250() Value of VV_GRUB_CMDLINE_LINUX: [${VV_GRUB_CMDLINE_LINUX}]."
# TODO REMOVE DEBUG LOGGER
fi fi
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "4250() Calling [grub_finalize_string]."
# TODO REMOVE DEBUG LOGGER
grub_finalize_string grub_finalize_string
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "4250() Back from [grub_finalize_string]."
# TODO REMOVE DEBUG LOGGER
# TODO REMOVE DEBUG LOGGER # TODO REMOVE DEBUG LOGGER
# shellcheck disable=SC2153 # shellcheck disable=SC2153
do_log "debug" "tty" "4250() GRUB_CMDLINE_LINUX: [${VAR_GRUB_CMDLINE_LINUX}]." do_log "debug" "file_only" "4250() GRUB_CMDLINE_LINUX: [${VAR_GRUB_CMDLINE_LINUX}]."
# shellcheck disable=SC2153 # shellcheck disable=SC2153
do_log "debug" "tty" "4250() GRUB_CMDLINE_LINUX_DEFAULT: [${VAR_GRUB_CMDLINE_LINUX_DEFAULT}]." do_log "debug" "file_only" "4250() GRUB_CMDLINE_LINUX_DEFAULT: [${VAR_GRUB_CMDLINE_LINUX_DEFAULT}]."
sleep 5 sleep 5
# TODO REMOVE DEBUG LOGGER # TODO REMOVE DEBUG LOGGER