V8.00.000.2025.06.17
All checks were successful
🛡️ Shell Script Linting / 🛡️ Shell Script Linting (push) Successful in 2m6s
All checks were successful
🛡️ Shell Script Linting / 🛡️ Shell Script Linting (push) Successful in 2m6s
Signed-off-by: Marc S. Weidner <msw@coresecret.dev>
This commit is contained in:
@@ -49,77 +49,84 @@ readonly -f final_commands
|
||||
|
||||
#######################################
|
||||
# description
|
||||
# Globals:
|
||||
# RECOVERY
|
||||
# TARGET
|
||||
# VAR_RUN_RECOVERY
|
||||
# Arguments:
|
||||
# None
|
||||
# None
|
||||
# Returns:
|
||||
# 0 ...
|
||||
# 0: on success
|
||||
#######################################
|
||||
ciss_enforce_multi_user_target() {
|
||||
### Declare Arrays, HashMaps, and Variables.
|
||||
declare -a ary_dm_units=()
|
||||
declare var_target="${TARGET}"
|
||||
|
||||
### Check for TARGET / RECOVERY.
|
||||
[[ "${VAR_RUN_RECOVERY}" == "true" ]] && var_target="${RECOVERY}"
|
||||
|
||||
declare var_dm="" var_unit_dir="" var_link="${var_target}/etc/systemd/system/default.target"
|
||||
# shellcheck disable=SC2016
|
||||
chroot_script "${var_target}" '
|
||||
declare var_dm="" var_unit_dir="" var_link="/etc/systemd/system/default.target"
|
||||
|
||||
### Determine the canonical systemd unit dir inside TARGET.
|
||||
if [[ -d "${TARGET}/lib/systemd/system" ]]; then
|
||||
### Determine the canonical systemd unit dir inside TARGET.
|
||||
if [[ -d /lib/systemd/system ]]; then
|
||||
|
||||
var_unit_dir="${TARGET}/lib/systemd/system"
|
||||
var_unit_dir=/lib/systemd/system
|
||||
|
||||
elif [[ -d "${TARGET}/usr/lib/systemd/system" ]]; then
|
||||
elif [[ -d /usr/lib/systemd/system ]]; then
|
||||
|
||||
var_unit_dir="${TARGET}/usr/lib/systemd/system"
|
||||
var_unit_dir=/usr/lib/systemd/system
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
### Enforce 'default.target' -> 'multi-user.target' as a symlink.
|
||||
if [[ -e "${var_link}" ]] && [[ ! -L "${var_link}" ]]; then
|
||||
|
||||
### A regular file here is wrong; we remove it to avoid vendor fallback to graphical.
|
||||
rm -f -- "${var_link}"
|
||||
|
||||
fi
|
||||
|
||||
if [[ ! -L "${var_link}" ]]; then
|
||||
|
||||
ln -s "${var_unit_dir}/multi-user.target" "${var_link}"
|
||||
|
||||
else
|
||||
|
||||
### Ensure it points to multi-user.
|
||||
# shellcheck disable=SC2312
|
||||
if [[ "$(readlink -f "${var_link}")" != "${var_unit_dir}/multi-user.target" ]]; then
|
||||
### Enforce default.target -> multi-user.target as a symlink.
|
||||
if [[ -e "${var_link}" ]] && [[ ! -L "${var_link}" ]]; then
|
||||
|
||||
### A regular file here is wrong; we remove it to avoid vendor fallback to graphical.
|
||||
rm -f -- "${var_link}"
|
||||
|
||||
fi
|
||||
|
||||
if [[ ! -L "${var_link}" ]]; then
|
||||
|
||||
ln -s "${var_unit_dir}/multi-user.target" "${var_link}"
|
||||
|
||||
fi
|
||||
else
|
||||
|
||||
fi
|
||||
### Ensure it points to multi-user.
|
||||
|
||||
### Hard-block any display manager (mask via /dev/null symlink). Include common DMs, and the generic alias:
|
||||
ary_dm_units=(
|
||||
"display-manager.service"
|
||||
"gdm.service" "gdm3.service"
|
||||
"sddm.service"
|
||||
"lightdm.service"
|
||||
"xdm.service"
|
||||
"lxdm.service"
|
||||
"slim.service"
|
||||
)
|
||||
if [[ "$(readlink -f "${var_link}")" != "${var_unit_dir}/multi-user.target" ]]; then
|
||||
|
||||
for var_dm in "${ary_dm_units[@]}"; do
|
||||
rm -f -- "${var_link}"
|
||||
ln -s "${var_unit_dir}/multi-user.target" "${var_link}"
|
||||
|
||||
if [[ ! -L "${TARGET}/etc/systemd/system/${var_dm}" ]]; then
|
||||
|
||||
ln -s /dev/null "${TARGET}/etc/systemd/system/${var_dm}"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
### Hard-block any display manager (mask via /dev/null symlink). Include common DMs, and the generic alias:
|
||||
ary_dm_units=(
|
||||
"display-manager.service"
|
||||
"gdm.service"
|
||||
"gdm3.service"
|
||||
"sddm.service"
|
||||
"lightdm.service"
|
||||
"xdm.service"
|
||||
"lxdm.service"
|
||||
"slim.service"
|
||||
)
|
||||
|
||||
for var_dm in "${ary_dm_units[@]}"; do
|
||||
|
||||
if [[ ! -L "/etc/systemd/system/${var_dm}" ]]; then
|
||||
|
||||
ln -s /dev/null "/etc/systemd/system/${var_dm}"
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
'
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user