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.
# Globals:
# ERR_CHRT_COMMAND
# BASH_SOURCE
# TERM
# Arguments:
# 1: Target of the chroot environment.
@@ -35,6 +35,7 @@ do_in_target() {
declare var_chroot_target="$1"; shift
declare -a ary_chroot_command=("$@")
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
@@ -63,12 +64,12 @@ do_in_target() {
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}"
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
fi
@@ -78,9 +79,8 @@ do_in_target() {
# Execute a full shell script line inside the chroot via bash -c.
# TODO: Supports interactive debug shell on error.
# Globals:
# ERR_CHRT_COMMAND
# BASH_SOURCE
# TERM
# DEBUG_INTERACTIVE (optional boolean)
# Arguments:
# 1: Target of the chroot environment
# 2: Command string to execute inside a shell (quoted)
@@ -94,6 +94,7 @@ do_in_target_script() {
declare var_chroot_script="$2"
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 var_mod="${BASH_SOURCE[1]##*/}"; var_mod="${var_mod%%_*}()"
if [[ -z "${var_chroot_script}" ]]; then
@@ -114,7 +115,7 @@ do_in_target_script() {
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}"
# TODO: Test with Dialog Wrapper in interactive mode.
@@ -126,7 +127,7 @@ do_in_target_script() {
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
fi

View File

@@ -15,9 +15,6 @@
guard_sourcing
### Variable to finish GRUB CMDLINE strings.
declare -grx VAR_H='"'
#######################################
# Helper module to extract the current GRUB CMDLINE strings.
# Globals:
@@ -52,30 +49,43 @@ old_grub_extract_current_string() {
# VV_GRUB_CMDLINE_LINUX_DEFAULT
# Arguments:
# None
# Returns:
# 0: on success
#######################################
grub_extract_current_string() {
### Declare Arrays, HashMaps, and Variables.
declare -gx VAR_ORIG_GRUB_CMDLINE_LINUX="" VAR_ORIG_GRUB_CMDLINE_LINUX_DEFAULT="" \
VK_GRUB_CMDLINE_LINUX='' VK_GRUB_CMDLINE_LINUX_DEFAULT='' \
VV_GRUB_CMDLINE_LINUX="" VV_GRUB_CMDLINE_LINUX_DEFAULT=""
VK_GRUB_CMDLINE_LINUX='' VK_GRUB_CMDLINE_LINUX_DEFAULT='' \
VV_GRUB_CMDLINE_LINUX="" VV_GRUB_CMDLINE_LINUX_DEFAULT=""
declare vv_raw_lin="" vv_raw_lin_def=""
### Original lines (retained, strictly anchored).
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")
# 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).
VK_GRUB_CMDLINE_LINUX='GRUB_CMDLINE_LINUX='
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).
# shellcheck disable=SC2295
vv_raw_lin="${VAR_ORIG_GRUB_CMDLINE_LINUX#${VK_GRUB_CMDLINE_LINUX}}"
# shellcheck disable=SC2295
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.
if [[ -n ${vv_raw_lin} ]]; then
@@ -114,8 +124,6 @@ grub_extract_current_string() {
VV_GRUB_CMDLINE_LINUX="${vv_raw_lin}"
# shellcheck disable=SC2034
VV_GRUB_CMDLINE_LINUX_DEFAULT="${vv_raw_lin_def}"
return 0
}
#######################################
@@ -130,8 +138,6 @@ grub_extract_current_string() {
# VV_GRUB_CMDLINE_LINUX_DEFAULT
# Arguments:
# None
# Returns:
# 0 ...
#######################################
grub_finalize_string() {
### 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 -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}"
### Replace lines strictly based on the key (including '=').
@@ -148,6 +160,10 @@ grub_finalize_string() {
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
"${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_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
# 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
do_log "debug" "tty" "4250() Value of GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]."
sleep 5
do_log "debug" "file_only" "4250() Value of GRUB_CMDLINE_LINUX_DEFAULT: [${VV_GRUB_CMDLINE_LINUX_DEFAULT}]."
# TODO REMOVE DEBUG LOGGER
# shellcheck disable=SC2034
@@ -60,24 +59,41 @@ update_grub_bootparameter() {
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
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}"
# 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
if [[ "${VAR_NUKE}" == "true" ]]; then
var_nuke_string="nuke=${VAR_NUKE_HASH}"
# shellcheck disable=SC2034
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
# TODO REMOVE DEBUG LOGGER
do_log "debug" "file_only" "4250() Calling [grub_finalize_string]."
# TODO REMOVE DEBUG LOGGER
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
# 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
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
# TODO REMOVE DEBUG LOGGER