49 lines
2.4 KiB
Bash
49 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
# =============================================================================
|
|
# .automated_script.sh — Entry point triggered by the archiso live environment
|
|
#
|
|
# PURPOSE:
|
|
# This script is called by the archiso systemd getty service (or directly
|
|
# from .zlogin) immediately after the root user logs in on the live ISO.
|
|
# It acts as the single decision point that determines whether to run the
|
|
# automated unattended installer or the guided interactive installer.
|
|
#
|
|
# HOW IT WORKS:
|
|
# archiso's default releng profile ships a .automated_script.sh that starts
|
|
# a graphical session or similar. We replace it with this simpler dispatcher.
|
|
#
|
|
# The presence or absence of /answerfile.json is the determining signal:
|
|
# - EXISTS → machine has been configured for unattended deployment
|
|
# (answerfile was embedded by build.sh --preconf, or placed
|
|
# on the live system via another mechanism such as a USB drive).
|
|
# → launch.sh is called in "auto" mode and /answerfile.json is passed as
|
|
# the configuration source for arch-autoinstall.sh.
|
|
#
|
|
# - MISSING → this is a standard interactive boot (no pre-configuration).
|
|
# → launch.sh is called in "guided" mode which starts the interactive
|
|
# guided installer after prompting for keyboard layout and action.
|
|
#
|
|
# WHY exec:
|
|
# Using exec replaces this process with launch.sh rather than spawning a
|
|
# child. This means the PID stays the same and signals propagate correctly.
|
|
# If launch.sh exits, the shell exits too, which is the correct behaviour
|
|
# for an installer that terminates after completing or being cancelled.
|
|
# =============================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
ANSWERFILE="/answerfile.json"
|
|
|
|
# Check whether an answerfile was embedded in the ISO (or placed on the live
|
|
# system). The answerfile contains all installation parameters as JSON, allowing
|
|
# completely unattended installation with zero user interaction.
|
|
if [[ -f "$ANSWERFILE" ]]; then
|
|
# Automated mode: pass "auto" as the first arg and the answerfile path as
|
|
# the second. launch.sh will forward these to arch-autoinstall.sh.
|
|
exec /root/launch.sh auto "$ANSWERFILE"
|
|
else
|
|
# Guided mode: start the interactive installer. The user will be prompted
|
|
# for keyboard layout and installation action before anything happens.
|
|
exec /root/launch.sh guided
|
|
fi
|