The ISO now boots straight into a GTK installer instead of dropping to a tty. Structure: - installer/arcline-installer: small GTK3 (Python) frontend that drives scripts/deploy-disk.sh — pick a disk, choose boot mode, type the device path to confirm, watch the deploy log, reboot. Pure helper logic is tested against lsblk (lowercase keys, pseudo-devices filtered). - scripts/build-live.sh: builds build/rootfs/<edition>-live by cloning the CLEAN rootfs and layering on live-boot, a minimal X session (Xorg + openbox), the installer, and the deploy tooling under /usr/lib/arcline (deploy-disk.sh + btrfs/init.sh + edition fstabs, laid out so the scripts' own path resolution works unchanged). - overlays/live/: arcline-installer.service + session script that start Xorg on vt1 (with -allow-root) and run the installer as the X client. - build-iso.sh: builds the live rootfs for the squashfs AND stages the clean rootfs archive into isofiles/install/ — the installer deploys the clean archive, so what's installed is the hardened system, never the live session with the installer in it. - Refactor: ARCLINE_LIVE handling removed from build-rootfs.sh and configure-system.sh (now lives entirely in build-live.sh). - validate.sh now checks overlays shell scripts + installer python. - docs updated (building.md, architecture.md, installer/README.md).
2.5 KiB
Arcline graphical installer
installer/arcline-installer is the GTK3 frontend that the live ISO boots
into. It is a thin wrapper around scripts/deploy-disk.sh — the same,
auditable deploy core the scripted installer and disk-image builder use.
How it works
boot ISO → live session (Xorg on vt1) → installer window
pick target disk → confirm device path → deploy-disk.sh → reboot
The installer extracts install/arcline-<edition>.tar.xz (the clean rootfs
archive staged on the ISO by build-iso.sh) to a temp dir and runs:
/usr/lib/arcline/scripts/deploy-disk.sh <device> <rootfs> <edition> --boot <bios|efi>
streaming the deploy log into the window. Everything destructive lives in
deploy-disk.sh, which the live image ships (with its dependencies) at
/usr/lib/arcline:
/usr/lib/arcline/scripts/{common,deploy-disk,apply-fstab}.sh
/usr/lib/arcline/btrfs/init.sh
/usr/lib/arcline/editions/{server,workstation,cloud}/fstab
The layout mirrors the repo so the scripts' own path resolution works unchanged.
Building the ISO
make iso-server # or iso-workstation / iso-cloud
build-iso.sh builds the clean rootfs, then build-live.sh clones it into
build/rootfs/<edition>-live and layers on live-boot, a minimal X session
(openbox), the installer, and the deploy tooling. The live session rootfs is
never what gets installed — the installer always deploys the clean
archive, so what you end up with on disk is exactly the hardened system, not
the live session with the installer in it.
Autostart
overlays/live/etc/systemd/system/arcline-installer.service starts
arcline-installer-session on boot: it launches Xorg on vt1 (with
-allow-root, since the live session runs as root) and the installer as the
X client. When the installer exits, X and the session end.
Manual run (for development / on a box without the ISO)
# on any Arcline system with the deploy tooling:
sudo /usr/local/bin/arcline-installer
The app refuses to run as a non-root user and errors if the deploy tooling is missing.
Notes
- Disk discovery uses
lsblk(util-linux); read-only devices are hidden. - Confirmation mirrors
scripts/install.sh: you must type the exact device path before the install button will proceed. - Root is hidden by design; the installer runs before any user session.
- For UEFI machines, pick "UEFI" boot mode (or use
BOOT=efiwhen building); seedocs/secureboot.mdfor signing the boot chain for Secure Boot.