Skip to content

Build the Quattro Limine stack on aarch64 - #222

Open
birkskyum wants to merge 6 commits into
omacom:masterfrom
birkskyum:upstream/aarch64-limine
Open

Build the Quattro Limine stack on aarch64#222
birkskyum wants to merge 6 commits into
omacom:masterfrom
birkskyum:upstream/aarch64-limine

Conversation

@birkskyum

@birkskyum birkskyum commented Aug 27, 2026

Copy link
Copy Markdown

Summary

  • lets the package builder bootstrap on aarch64 before a public Omarchy ARM repository exists
  • builds limine-mkinitcpio-hook and limine-snapper-sync with architecture-matched GraalVM archives
  • uses a pinned Gradle binary distribution because Arch Linux ARM does not provide the required Gradle package
  • carries the exact upstream Limine fixes for EFI architecture selection and kernel discovery when the distro kernel omits pkgbase
  • keeps linux-aarch64-pkgbase-shim because Arch Linux ARM still installs its kernel only as /boot/Image, then accepts the shim-written pkgbase in Limine

Provenance

This is the reduced modern version of the Limine and package work proven in JimmayVV/omarchy-pkgs@snapdragon. Jimmy Van Veen identified and implemented the working aarch64 packaging path. His three shim commits are preserved with their original authorship. The two upstream source patches are the exact changes merged in Zesko/limine-entry-tool MRs 63 and 64. Birk removed fork pins and diagnostic packages, and adapted Jimmy's pkgbase ownership check to apply after MR 64.

Why patches remain after upstream merge

Both source fixes merged upstream on August 25 and 27, but omarchy-pkgs is pinned to limine-entry-tool 1.37.1, released before them. Drop those two patches when a release containing both merged changes is available.

The additional accept-shim-pkgbase patch and linux-aarch64-pkgbase-shim remain necessary because MR 64 discovers a kernel without pkgbase but does not provide the kernel image path. mkinitcpio does not find Arch Linux ARM's /boot/Image by itself. Retire the shim and its compatibility patch only when Arch Linux ARM ships both pkgbase and vmlinuz in the module directory, or Limine passes /boot/Image explicitly.

Validation

  • both upstream patch files have the exact SHA-256 values of the merged upstream diffs
  • all three patches apply cleanly in order to the pinned 1.37.1 source
  • the shim path is the one used by the working Yoga Slim 7x installation
  • the corrected package stack builds, publishes, verifies, and uploads on native aarch64: https://github.com/birkskyum/omarchy-pkgs/actions/runs/33122253609

This complements the reusable native ARM workflow in #223 and package architecture PRs #195 and #197.

@birkskyum
birkskyum marked this pull request as ready for review August 27, 2026 21:50
@birkskyum

Copy link
Copy Markdown
Author

Native ARM64 validation: the cleaned package stack built successfully in the combined PR integration run. The run failed only in the later repository-database publishing step owned by #223, after all three requested packages had been produced. Build evidence: https://github.com/birkskyum/omarchy-pkgs/actions/runs/33118509188

@JimmayVV

JimmayVV commented Aug 27, 2026

Copy link
Copy Markdown

I think one piece of the shim this branch retires is still needed. Zesko !64 lets limine-mkinitcpio-install discover a kernel whose package ships no pkgbase. But the hook then runs mkinitcpio --kernel <version> without --kernelimage, and mkinitcpio only looks for the image at /lib/modules/<ver>/vmlinuz, /lib/modules/<ver>/vmlinux and /boot/vmlinuz-*. Arch Linux ARM installs /boot/Image, which matches none of those. So I'd expect the UKI build to fail with "Could not find kernel image" once nothing copies Image into the modules directory. That copy was the other half of what linux-aarch64-pkgbase-shim did, alongside writing pkgbase.

If your Yoga test ran with the shim still installed from the integration branch, that would explain it working. Two fixes I can see. Keep the shim here with its retirement note, or have this patch also point mkinitcpio at /boot/Image. Happy to be wrong if I've missed something in the branch.

JimmayVV and others added 4 commits August 28, 2026 00:12
Arch Linux ARM's kernel packages install the kernel as /boot/Image and ship
no usr/lib/modules/<ver>/{pkgbase,vmlinuz}, which is how mkinitcpio and
limine-entry-tool find kernels. One pacman hook, ordered 85- so it runs
before 90-mkinitcpio-install, writes both files into every package-owned
modules directory that lacks pkgbase; the usual hook then builds the UKI and
writes the Limine entry. It also covers kernels already present when the
shim itself is installed, cleans up the leftover directories of removed
kernels, and never touches a directory that has pkgbase, so it retires by
removal once archlinuxarm/PKGBUILDs#2215 (or its successor) lands.

Added to the aarch64 workflow's ISO package set.
…he 90 hook is masked

omarchy-iso's installer points 90-mkinitcpio-install.hook at /dev/null in
the target during the chroot phase and runs limine-update itself afterwards.
When the shim is installed in that phase it writes pkgbase and vmlinuz and
would otherwise start a UKI build that finalize_limine_boot throws away.
The aarch64 repo build only rebuilds packages whose version moved, so the
previous script fix never reached the repository.
@birkskyum

Copy link
Copy Markdown
Author

Good catch. Confirmed: MR 64 discovers the module directory but mkinitcpio still cannot find Arch Linux ARM's /boot/Image. I restored your three shim commits with authorship intact and added an ownership compatibility patch after MR 64, because the shim-written pkgbase is not package-owned. The PR is back in draft until the corrected exact stack passes a native ARM build.

@birkskyum
birkskyum marked this pull request as ready for review August 27, 2026 22:26
@birkskyum

Copy link
Copy Markdown
Author

Corrected native ARM validation passed, including linux-aarch64-pkgbase-shim 1-3, limine-mkinitcpio-hook 1.37.1-4, repository database creation, verification, and artifact upload: https://github.com/birkskyum/omarchy-pkgs/actions/runs/33122253609

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.

2 participants