Files
os-build/installer/README.md
Blake Ridgway 0ea8b713dd feat: graphical installer in the live ISO
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).
2026-08-21 20:24:09 -05:00

72 lines
2.5 KiB
Markdown

# 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
```bash
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)
```bash
# 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=efi` when building);
see `docs/secureboot.md` for signing the boot chain for Secure Boot.