feat: add disk-deploy core, disk image builder, and installer

- deploy-disk.sh: the shared "write a finished system to a disk" step —
  partition (GPT bios/efi) -> btrfs layout via btrfs/init.sh -> rsync
  rootfs -> chroot (real fstab, GRUB, hostname). Carries the optional
  ARCLINE_SIGN hook; the signing tooling itself lands in a later commit.
- apply-fstab.sh: renders the edition fstab template with real root/efi
  UUIDs and drops the swap line.
- build-image.sh: rootfs -> bootable qcow2/raw disk image (sparse file +
  loop device + deploy), the cloud edition's primary output.
- install.sh: scripted installer for a real disk, confirmation-gated.
- Makefile: image-<edition> targets (+ minimal variants); build-edition.sh
  learns the "image" stage; cloud metadata now ships a disk image.
- check-host-deps.sh / GitLab CI: add gdisk, parted, rsync, dosfstools,
  qemu-utils, dpkg, sbsigntool to the build image.
This commit is contained in:
Blake Ridgway
2026-08-21 13:33:17 -05:00
parent 87fc370541
commit 51d87daa7b
9 changed files with 367 additions and 7 deletions

View File

@@ -31,9 +31,9 @@ validate:
image: debian:bookworm
before_script:
- apt-get update -qq
- apt-get install -y -qq debootstrap squashfs-tools grub2-common xorriso cpio curl git make bash
- apt-get install -y -qq debootstrap squashfs-tools grub2-common xorriso cpio curl git make bash gdisk parted rsync dosfstools qemu-utils unzip dpkg openssl sbsigntool
script:
- make iso-${EDITION}
- make ${TARGET:-iso}-${EDITION}
artifacts:
name: "arcline-${EDITION}-${VERSION}"
paths:
@@ -58,6 +58,7 @@ build-cloud:
extends: .build
variables:
EDITION: cloud
TARGET: image # cloud edition ships as a qcow2 disk image
# ── test ────────────────────────────────────────────────────────────────────
test: