Add verification that critical mounts (root and ESP) are still intact after void-installer exits. Catches cases where installer accidentally reformats filesystems despite instructions. Fail fast with clear error message if mounts disappeared, rather than proceeding to post-install and encountering cryptic errors. Decision: Check mounts immediately after installer rather than during post-install to provide clear failure point and message. Alternative considered: Monitor installer process to prevent reformatting, rejected as too invasive and complex.
72 lines
2.4 KiB
Bash
72 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# === Motivation ===
|
|
# Keep the official installer as the configuration authority.
|
|
|
|
# === Problem Statement ===
|
|
# We need a clean handoff so the installer uses existing mounts without reformatting.
|
|
|
|
# === Scope ===
|
|
# In scope: instructions and guardrails for the user during the installer run.
|
|
# Out of scope: automated installer configuration.
|
|
|
|
# === Concepts ===
|
|
# Handoff: a pause where the wrapper delegates to the installer.
|
|
|
|
# === Decisions ===
|
|
# Provide clear, minimal guidance to avoid overriding prepared filesystems.
|
|
# Support only CLI installer flow to keep guidance consistent.
|
|
|
|
# === Alternatives Considered ===
|
|
# Fully scripted installation rejected for this phase.
|
|
|
|
# === Constraints ===
|
|
# The wrapper must not hide or alter installer behavior.
|
|
|
|
# === Open Questions ===
|
|
# Should we provide a checklist or step-by-step guide during the installer handoff?
|
|
# How do we detect if the installer reformatted filesystems against our intent?
|
|
# Should we monitor the installer process, or fully delegate control?
|
|
|
|
# === Success Criteria ===
|
|
# The installer completes using the prepared mounts without reformatting.
|
|
|
|
run_installer() {
|
|
: "${MOUNT_ROOT:?Mount root is required}"
|
|
: "${ESP_MOUNT:?ESP mount path is required}"
|
|
if ! findmnt "$MOUNT_ROOT" >/dev/null 2>&1; then
|
|
die "Mount root not found: $MOUNT_ROOT"
|
|
fi
|
|
if ! findmnt "$ESP_MOUNT" >/dev/null 2>&1; then
|
|
die "ESP mount not found: $ESP_MOUNT"
|
|
fi
|
|
|
|
log_info "Installer handoff: use the prepared mounts without formatting."
|
|
log_info "In the installer: choose manual partitioning and only set mountpoints."
|
|
|
|
if [[ "${SKIP_INSTALLER:-0}" -eq 1 ]]; then
|
|
log_warn "Skipping installer per request."
|
|
return 0
|
|
fi
|
|
|
|
read -r -p "Press Enter to launch void-installer..." _
|
|
|
|
if command -v void-installer >/dev/null 2>&1; then
|
|
void-installer
|
|
else
|
|
log_warn "void-installer not found. Run it manually in another shell."
|
|
fi
|
|
|
|
read -r -p "Press Enter once the installer is complete..." _
|
|
|
|
# Verify critical mounts are still intact after installer
|
|
if ! findmnt "$MOUNT_ROOT" >/dev/null 2>&1; then
|
|
die "Root mount disappeared after installer. The installer may have reformatted the filesystem."
|
|
fi
|
|
if ! findmnt "$ESP_MOUNT" >/dev/null 2>&1; then
|
|
die "ESP mount disappeared after installer. The installer may have reformatted the filesystem."
|
|
fi
|
|
|
|
log_info "Mount verification passed."
|
|
}
|