Skip to content

Add AArch64 and Snapdragon ISO support - #156

Draft
gilgm12 wants to merge 7 commits into
omacom:quattrofrom
gilgm12:aarch64-support
Draft

Add AArch64 and Snapdragon ISO support#156
gilgm12 wants to merge 7 commits into
omacom:quattrofrom
gilgm12:aarch64-support

Conversation

@gilgm12

@gilgm12 gilgm12 commented Sep 5, 2026

Copy link
Copy Markdown

Summary

  • add native AArch64 ISO builds backed by Arch Linux ARM packages
  • boot ARM64 UEFI through GRUB and select platform DTBs from a declarative hardware manifest
  • support Snapdragon X Elite systems through the install, encrypted-root, Limine, and first-boot paths
  • preserve the visible Plymouth LUKS prompt by carrying the required Qualcomm display stack in the initramfs
  • configure the Omarchy AArch64 overlay ahead of ALARM repositories, install the ALARM keyring, and retain a global HTTPS mirror fallback set on the installed system
  • bridge the ALARM linux-aarch64 kernel layout into Limine while supporting both legacy pkgbase and current modules.builtin hook discovery

Regression coverage

The initial 2026-09-05 artifact exposed a package-coupling regression at the end of installation: limine-mkinitcpio-hook 1.38 changed kernel discovery, while the embedded installer only recognized the older hook. The artifact test now extracts both the installer and the actual hook package from the ISO and verifies that they are compatible.

  • known-bad ISO fails: installer does not recognize the embedded Limine modules.builtin hook
  • rebuilt ISO passes the same compatibility check
  • 32 focused AArch64, platform, protected-ESP, pacman, and Limine unit tests pass
  • artifact checks pass for ARM64 EFI, kernel/initramfs references, DTB validity, Snapdragon arguments, and required archiso initramfs hooks

Hardware status

  • ISO boots on the Snapdragon test system
  • visible LUKS prompt confirmed on an earlier candidate
  • rebuilt regression-fixed artifact passes all automated checks
  • final physical install and boot of the rebuilt artifact is pending; keeping this PR in draft until that succeeds

Test artifact

omarchy-2026.09.05-aarch64-local.iso

SHA-256: 9c4d51a67c3b53b331fce9aca0deceabaaee853df86457ac455f5d52ef280fb4

gilgm12 and others added 7 commits September 5, 2026 09:16
Adds `--arch x86_64|aarch64` to bin/omarchy-iso-make and branches everywhere the
build assumed x86_64. The x86_64 path is unchanged: profiledef output is
byte-identical and the configurator's mirror JSON resolves to the same value.

Arch Linux ARM differs from Arch in ways that are not configuration:

  * the kernel package is linux-aarch64, not linux, and it installs /boot/Image
    rather than vmlinuz-*, which archiso hard-globs in four places
  * packages are .pkg.tar.xz, not .pkg.tar.zst
  * archiso is not packaged at all, so mkarchiso comes from the pinned submodule
    and mkinitcpio-archiso supplies the initramfs hooks separately
  * the repo layout is $arch/$repo, with a third base repo [alarm], no
    [multilib] and no [arch-mact2]

The subtlest: linux-aarch64 owns /etc/mkinitcpio.d/linux-aarch64.preset, so the
profile cannot ship a replacement, and the stock preset builds against
/etc/mkinitcpio.conf -- which omarchy-settings replaces with the target system's
hooks. The live initramfs then contains no archiso hook and the ISO panics on
boot, having built without complaint. customize_airootfs.sh rebuilds it against
archiso's config after pacstrap and fails the build when the hooks are absent.

Package lists are filtered through builder/aarch64-excludes.packages everywhere
they are consumed: the live ISO list, the offline mirror, the lists the ISO
ships, and the expected-package count. Filtering only some of them yields an ISO
that builds and then fails partway through installing.

test/unit/iso-structure-test.sh checks a built ISO for the invariants separating
"built" from "bootable", including the archiso hook. It skips when no ISO exists.

Mirrors stay out of tracked files: OMARCHY_PKGS_MIRROR, OMARCHY_BASE_MIRROR and
OMARCHY_EXTRA_PKGBUILDS override them per build, so no personal mirror is
committed and the defaults work once pkgs.omarchy.org publishes aarch64.

Builds and passes structural verification. Not yet booted or installed; see
alarm-iso.md for what remains and for errors in plans/aarch64-support.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant