Skip to content

feat(linux): support firmware preparation on Linux - #1

Merged
phakoda merged 1 commit into
mainfrom
linux-host-support
Sep 1, 2026
Merged

phakoda merged 1 commit into
mainfrom
linux-host-support

Conversation

@phakoda

@phakoda phakoda commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Goal

Make Linux a first-class host for the current darwin-vm root-shell workflow, so firmware preparation no longer requires a Mac.

What changed

  • add dmgutil.sh with macOS (hdiutil/ditto) and Linux (linux-apfs-rw/cp) backends
  • make get_files.sh run on Linux and use ldid for ad-hoc signing/CDHash extraction
  • make fix_perms.sh run on Linux and write numeric ownership 0:0
  • add LINUX.md with the Linux prerequisites and full prep/build/boot flow
  • add generated artifacts to .gitignore

Provenance / rebase notes

This is based on the Linux-host implementation from jprx#1, which reports end-to-end get_files.sh -> fix_perms.sh -> run.sh testing for both iPhone17,3 and Mac16,10 guests on Ubuntu 24.04 x86_64.

It is rebased onto the current phakoda/darwin-vm main (9044efc) and intentionally does not import that PR's unrelated SEP/device-tree or kernelcache log-suppression changes. That keeps the newer pre-SPTM InvalidateHmac fix on current main untouched.

Validation

  • bash -n dmgutil.sh get_files.sh fix_perms.sh passes in a Linux environment.
  • The branch is exactly one commit ahead of current main and zero commits behind.
  • Full firmware/boot execution cannot be reproduced inside the current automation shell because it has no outbound GitHub network access and no privileged linux-apfs-rw kernel module; the upstream PR provides the end-to-end Linux boot evidence this port is based on.

Scope

This establishes the Linux host foundation. Display/GPU, HID/input, networking/Wi-Fi, Bluetooth, GUI services, and SpringBoard remain subsequent emulation milestones.

Port the firmware-prep pipeline to Linux using linux-apfs-rw for the APFS recovery ramdisk and ldid for ad-hoc signing/CDHash extraction. Keep the existing macOS hdiutil/ditto/codesign path unchanged.

Based on the Linux-host implementation and end-to-end testing from jprx#1, rebased onto the current main without importing its unrelated guest SEP/kernelcache noise patches.
@phakoda
phakoda merged commit 3a9c905 into main Sep 1, 2026
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