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

Arcline OS — build system

The Linux OS for people who run infrastructure. Hardened Debian base. Pre-configured monitoring, auditing, and security tooling. Zero telemetry.

This repository is the build system ("the wires") behind Arcline OS. It turns a Debian base and a set of plain-text manifests into hardened, bootable operating system images for three editions: Server, Workstation, and Cloud.

What you get

  • A transparent, script-based build pipeline (no magic, everything auditable)
  • debootstrap → package install → overlay → in-chroot configure → live ISO
  • Disk images + installer: make image-<edition> builds bootable qcow2/raw images; scripts/install.sh installs to a real disk (both share the deploy-disk.sh core: partition → btrfs layout → GRUB → real fstab)
  • Secure by default: hardened kernel cmdline + sysctl, default-deny nftables, key-only ssh, AppArmor, no core dumps
  • btrfs-native: subvolume layout, scheduled read-only snapshots, and boot-to-snapshot rollback tooling
  • Zero telemetry: enforced by package selection, masked apt timers, and smoke tests that fail the build if telemetry is found
  • Pre-configured observability (server): Prometheus + node_exporter + Grafana (auto-provisioned) + Loki + promtail, local-only — Grafana/Loki/ promtail packaged as .debs by make vendor
  • The Arcline toolchain: a harness that packages all 11 Go tools into .debs and installs them into the image
  • Optional secure boot: MOK-based signing of the boot chain (ARCLINE_SIGN=1)
  • Smoke tests, GitLab CI, and docs that explain every decision

Quickstart

# on a Debian-family host with root/sudo
make deps              # install host build dependencies
make check             # validate the tree (fast, offline)
make iso-server        # build a bootable server ISO
make iso               # build all three editions
make image-cloud       # cloud edition as a qcow2 disk image
make toolchain         # build the 11 Go tools into .deb
make vendor            # build grafana/loki/promtail .debs
make iso-server-minimal # server ISO WITHOUT the Arcline toolchain
make test              # run smoke tests against built rootfs(es)

Artifacts land in build/artifacts/ with .sha256 checksums.

The Arcline tools are optional in an image (ARCLINE_TOOLCHAIN=auto|skip| require; see building).

Layout

os-build/
├── Makefile            # thin orchestration (make iso-<edition>)
├── versions.mk         # single source of truth for versions/paths
├── editions/           # per-edition manifests (packages, cmdline, fstab, metadata)
├── overlays/           # files that land in the image (base + per-edition layers)
├── scripts/            # the build pipeline (all plain bash)
├── btrfs/              # subvolume layout, snapshots, rollback
├── toolchain/          # packaging for the 11 Go tools
├── observability/      # Prometheus/Grafana/Loki configs (docs + overlays/server)
├── tests/              # tree validation + rootfs smoke tests
├── ci/                 # GitLab CI pipeline
└── docs/               # architecture, hardening, building, editions, ...

Documentation

Doc Contents
architecture the design and how a build flows
building prerequisites, quickstart, outputs, knobs
hardening every hardening decision, and how to tune it
editions server / workstation / cloud manifests
observability the pre-configured monitoring stack
toolchain the 11 Go tools and their packaging
secureboot MOK key generation + signing workflow
btrfs subvolume layout + snapshots + rollback

Status

The build pipeline, edition manifests, hardening baseline, btrfs tooling, observability packaging, disk images + installer, tests, CI, and optional secure boot are all in place and runnable. What's next: a Microsoft-KEK signed boot chain (only relevant for commercial distribution), arm64 support, and booted-VM verification tests.

License

GPL-3.0 — see LICENSE. Sponsored by Arcline IT LLC. No telemetry. No tracking.

Description
No description provided
Readme 232 KiB
Languages
Shell 82.8%
Python 9.6%
Makefile 7.6%