Skip to content

Install on 32-bit boards into an existing Linux LwVM partition - #97

Merged
henrikklee merged 4 commits into
mainfrom
armv7-install
Nov 7, 2026
Merged

henrikklee merged 4 commits into
mainfrom
armv7-install

Conversation

@henrikklee

Copy link
Copy Markdown
Contributor

What this changes, by effect:

  • orchard install on the iPad mini 1 (P105) can now install once a patched iBEC can be delivered: the root goes into an existing, unencrypted Linux LwVM partition (typed confirmation), and nothing else on the iOS disk is written. The LwVM map is not changed; creating the Linux partition is the iOS resize step's job.
  • The installer finds the internal disk itself (NVMe on 64-bit boards, applesftlN on 32-bit ones) instead of assuming /dev/nvme0n1. 64-bit installs are otherwise unchanged (tests).
  • orchard's initrd finds a root on LwVM partitions by their GUID; GPT disks are looked up as before.
  • There is no boot partition on 32-bit yet: the boot entry stays in the root's /boot, and the host keeps the Cascadia bundle that starts the installed system, for iOS's boot chain to place.
  • The device's serial number goes into the 32-bit device tree, so the Wi-Fi address is stable per iPad; orchard devices shows the serial number and the PWND:[...] tag.
  • Starting a 32-bit bundle (install or orchard run) goes through orchard-launcher; without it, installing says it is missing.
  • Before installing on P105, the installer warns that its storage does not reuse freed space yet, so the disk fills up for good.

LwVM header reading is Shayne Legault's code from #94 (b5c804a), under his authorship. Nothing here is tested on hardware.

shaynelegault and others added 4 commits November 7, 2026 22:25
The header parser of Shayne Legault's LwVM installer: both header copies
must agree, carry a valid CRC and describe a sane chunk map. Only the
reading part is taken (chunk_size, checksum, parse, partition); the HFS
shrink proof and the allocation stay out until the resize step is placed.

From shaynelegault/orchard#94, src/orchard/lwvm.py at b5c804a.

Assisted-by: LLM
The recovery-less install now also runs on the iPad mini 1 (P105) side,
ready for when a patched iBEC can be delivered:

- The add-on finds the one internal disk (NVMe on 64-bit boards,
  applesftlN on 32-bit ones) instead of assuming /dev/nvme0n1.
- On an LwVM disk the layout is the partitions the kernel's LwVM reader
  added, with type and GUID from the header (both copies must agree).
  Only an existing, unencrypted Linux partition is offered, replaced in
  place after a typed confirmation; the LwVM map is never written, and
  there is no boot partition: the BLS entry stays in the root's /boot
  (architecture arm), fstab names the root by filesystem UUID, and the
  host keeps the Cascadia bundle that starts the installed system.
- orchard's initrd finds a root on LwVM partitions by their LwVM GUID
  when a disk has no GPT; GPT disks are looked up as before.
- The Cascadia bundle carries the device's serial number (DFU SRNM) as
  the tree's serial-number, as m1n1 does on 64-bit boards, so the Wi-Fi
  address is stable per unit; `orchard devices` shows it and the
  PWND:[...] tag.
- Starting a Cascadia bundle (install or `orchard run`) goes through
  orchard-launcher (src/orchard/launcher.py); a board that needs it
  cannot install until it is installed, and says so.
- P105's device data records that its storage does not reclaim space
  yet; the installer warns that the disk fills up for good.

Assisted-by: LLM
The apple-armv7 kernel has the built-in CDC gadget off now (a066863);
orchard's initrd binds its own configfs gadget.

Assisted-by: LLM
@henrikklee
henrikklee merged commit 03fe481 into main Nov 7, 2026
11 checks passed
@henrikklee
henrikklee deleted the armv7-install branch November 7, 2026 15:07
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