V8.00.000.2025.06.17
Signed-off-by: Marc S. Weidner <msw@coresecret.dev>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,8 +49,6 @@ 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.
|
||||
@@ -66,16 +61,31 @@ grub_extract_current_string() {
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user