Commit Graph

15 Commits (405e37d24359f9397b6bab309fdca3c39985abaa)

Author SHA1 Message Date
Amir Alexander Abdelbaki 405e37d243 fix(installer): keyring race, unattended password, EFI fallback, rebuild cleanup
Found while testing both installers end-to-end in VMs:

- Wait for archiso's pacman-init.service instead of racing it. The installer
  autostarts at login while the live keyring is still being populated
  asynchronously, so every package failed with "signature is unknown trust" /
  "invalid or corrupted package (PGP signature)". Do not run pacman-key --init
  ourselves (corrupts the half-built keyring); wait, then refresh
  archlinux-keyring so an ISO built weeks ago still trusts current keys.
- archbaseos-guided-install.sh: honor the answerfile's password/luks_password
  fields; previously it always prompted interactively, so a documented
  "zero-interaction" netboot/WDS install hung forever with no console.
- Install GRUB to the UEFI removable-media fallback (/EFI/BOOT/BOOTX64.EFI) in
  addition to the NVRAM entry. Without it, an installed disk with empty/cleared
  NVRAM (fresh board, CMOS reset, or a cloned/redeployed image — the whole point
  of this installer) shows "No bootable device". Verified: the disk now boots to
  the login manager with fresh NVRAM.
- build.sh: sudo rm -rf the work dir. mkarchiso runs as root and leaves
  root-owned files if interrupted, so the next plain rm -rf aborted the script
  under set -e before mkarchiso could run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUhrcFU8J1Hnf7vNqNxZNi
2026-07-02 11:27:27 +02:00
Amir Alexander Abdelbaki 0e04a7cada fix(archiso): use oflag=direct so USB write progress isn't misleading
Without oflag=direct, dd copies the ISO into the page cache at high speed, the
status=progress counter races to ~100%, then appears to hang at the end while
the slow USB drains and conv=fsync flushes — looking frozen when it is still
writing. write-usb.sh now writes with oflag=direct (honest device-level
progress) and falls back to a cached write if the bridge rejects O_DIRECT;
build.sh's dd hint and explanation are updated to match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 19:22:23 +02:00
Amir Alexander Abdelbaki 3b0bf17210 fix(archiso): document/automate block-level USB write to fix ldlinux.c32 error
"failed to load ldlinux.c32" when booting from USB is caused by writing the
isohybrid ISO at file level (drag-and-drop, Rufus "ISO" mode, UNetbootin), which
destroys the MBR/isolinux layout. The ISO build itself is correct — archiso's
bios.syslinux mode installs isolinux.bin + isohdpfx.bin + the c32 modules and
applies the isohybrid MBR, and the profile's bootmodes match upstream releng.

Add archiso/write-usb.sh: a safe block-level (dd) writer that lists removable
disks, refuses partitions and the system/root disk, requires an all-caps YES,
unmounts the target, then writes with conv=fsync. build.sh's completion output
now points at it and warns that file-level copies cause exactly this error.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 19:08:33 +02:00
Amir Alexander Abdelbaki 52fe3a910e feat(plymouth+resources): bundle bg-skull.svg in repo and archiso
Move the splash logo into resources/bg-skull.svg so it's tracked in git
and always available alongside the dotfiles.  build.sh now copies
resources/ into /root/installer/resources/ on the ISO.  The Plymouth
module resolves the SVG from the repo copy first, ISO copy second —
no user intervention or ~/Pictures setup required.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SyBNiWy3wpawrWb9ryVk7p
2026-06-26 10:48:45 +02:00
Amir Alexander Abdelbaki cb464c830f chore: add inline comments across all modules and configs 2026-06-25 13:07:06 +02:00
Amir Alexander Abdelbaki 86808b4573 feat(archiso): add PXE/netboot.xyz boot support
Enable the netboot buildmode in profiledef.sh so mkarchiso produces a
netboot tarball (kernel + initrd + squashfs) alongside the ISO. Add
--netboot-url flag to build.sh which generates a ready-to-chainload
m-archy-netboot.ipxe script. Document the full netboot.xyz deployment
workflow in docs/md/archiso.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 14:45:28 +02:00
Amir Alexander Abdelbaki fb4cef6a09 fix(archiso): chmod 777 build and out dirs after mkarchiso
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 20:36:49 +02:00
Amir Alexander Abdelbaki a84e6ac41c feat(archiso): add system reset mode to installer
Adds a post-keymap action selection to launch.sh (Install vs Reset).
The reset routine (reset-arch.sh) unlocks LUKS via FIDO2 token and/or
passphrase, snapshots /etc credentials and config, wipes and recreates
the @ btrfs subvolume, reinstalls base packages via pacstrap, restores
auth files (passwd/shadow/pam.d/sudoers) and system config, then
regenerates the initramfs and GRUB menu from chroot. User home data is
preserved; ~/.config is cleared except Yubico/ auth keys so FIDO2 PAM
login continues to work. libfido2 added to packages.extra for live-env
token unlock support.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 15:09:00 +02:00
Amir Alexander Abdelbaki 58de8fac1b chmod setup/archiso/build.sh 2026-05-19 23:19:53 +02:00
Amir Alexander Abdelbaki 9e541eb21b fix(archiso): chown work and output dirs back to user after mkarchiso
sudo mkarchiso leaves files owned by root, causing rm -rf to fail on re-runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 22:24:25 +02:00
Amir Alexander Abdelbaki 278ffb4a5a feat(archiso): auto-start guided installer on boot, use answerfile for unattended mode
.zlogin execs .automated_script.sh on login, which checks for /answerfile.json;
if present it runs the auto installer (passing the path), otherwise launches the
guided installer directly — no manual invocation needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 22:20:30 +02:00
Amir Alexander Abdelbaki b5a3b46c79 setup: add answerfile system for fully automated installs
tui-install.sh:
  - Reads /answerfile.json if present (ANSWERFILE_MODE)
  - All dialog selections (components, DE, apps) sourced from file
  - Hostname from answerfile gets MAC address suffix appended to
    prevent conflicts when deploying one image to multiple machines
  - Interactive hostname inputbox added to the normal TUI flow
  - Colorway dialog added as final step; skipped if no colors differ
    from defaults and no answerfile colors are set
  - Answerfile mode: runs non-interactively, logs warnings on failure

generate-answerfile.sh (new):
  - Dry-runs the full installer dialog flow (OS + dotfiles)
  - Writes selections to ~/answerfile.json (or a given path)
  - No software is installed; passwords are never written to the file

build.sh:
  - New --preconf [FILE] flag embeds an answerfile into the ISO at
    /answerfile.json; omitting the flag leaves the ISO clean
  - Validates JSON with jq if available before embedding
  - Reworked arg parsing to handle the new flag alongside OUT_DIR

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 15:24:47 +02:00
Amir Alexander Abdelbaki 19b31859f6 archiso: use HOME instead of /tmp for build and output dirs
/tmp in WSL is a RAM-backed tmpfs that fills up during the build,
leaving xorriso with no room to write the ISO.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 14:33:01 +02:00
Amir Alexander Abdelbaki ecd272cdce archiso: make WORK_DIR and OUT_DIR overridable via env vars
/tmp fills up during large builds; allow redirecting both dirs without
editing the script (WORK_DIR=~/iso-work ./build.sh ~/iso-out).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 14:11:50 +02:00
Amir Alexander Abdelbaki a56d27888c setup: add archiso profile and run tui-install inside chroot
- Add setup/archiso/ with build.sh, releng overlay, motd, and
  install-arch launcher command for the live ISO
- Fix cryptroot mapper name in arch-autoinstall.sh (was 'root',
  breaking all subsequent mounts)
- Add base-devel to pacstrap in both installers (required for yay/makepkg)
- Clone dotfiles inside chroot so tui-install.sh is available immediately
- After base install, offer to run tui-install.sh as the regular user
  inside the chroot via runuser, with a temporary NOPASSWD sudoers rule;
  skip option available for base-only installs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 13:46:49 +02:00