Repository navigation
build: add ARMv7 Cascadia recovery producers - #82
Open
shaynelegault wants to merge 7 commits into
Open
shaynelegault wants to merge 7 commits into
shaynelegault wants to merge 7 commits into
Conversation
This was referenced Nov 6, 2026
shaynelegault
force-pushed
the
p105/04-armv7-recovery
branch
from
November 6, 2026 19:27
09bfc5f to
b3e0fd7
Compare
Select ARM/v7 or ARM64 tool recipes explicitly and keep their outputs in separate caches. Pin Debian's ARMHF BusyBox package and verify each finished tool's ELF architecture and static linkage. Native builds require a host whose architecture matches the selected target. Assisted-by: LLM
Use board-owned handoff data to compile the ARM32 staging loader. Preserve Cascadia's cache/MMU handoff and require executable code at the upload address. A checked configuration places the supplied external initramfs in reserved RAM before entering Linux through its edited DTB. Bound the zImage decompressor workspace and preserve the kernel bytes. Add synthetic layout tests and a Linux fixture that exercises the actual loader C copy and rejection paths. Source provenance is recorded in NOTICE. The external-initramfs handoff still requires physical qualification. Assisted-by: LLM
Resolve one root architecture's per-platform loader and target tools through Orchard's producer contract. Preserve explicit board selection for Cascadia and stage ARM EABI5 hard-float Python dependency closures. Platform layers use the declared kernel image and validate the requested root ISA. Route RAM and recovery assembly through the declared payload format, bind Cascadia DTBs to their selected board, and keep Pongo inputs on their own boot path. Existing ARM64 default arguments remain supported. Document the producer contract and exercise cache separation and architecture refusal. Assisted-by: LLM
Carry a descriptor-selected host USB identity policy through the checked Cascadia bootargs, bind each upload to its selected hardware and a fresh attempt, and revalidate that provenance in RAM. ARM64 recovery keeps its existing ADT identity path. Stage declared USB dependencies and defer manual storage modules until the host has serial and authenticated SSH. Reject manual drivers built into the kernel or selected as USB dependencies before assembly. Validated with 666 unit tests (one Linux-only skip) and independent cross-layer review. Physical P105 qualification remains pending. Assisted-by: LLM
shaynelegault
force-pushed
the
p105/04-armv7-recovery
branch
from
November 6, 2026 20:41
3b7226e to
95933b7
Compare
Clear the profile watchdog before reading the checked handoff configuration. Rejected payloads now remain available for inspection instead of resetting while the loader waits. Cover the rejected-config path in the Linux runtime fixture. Assisted-by: LLM
Validate the uploaded image before touching reserved high RAM. Capture its checked relocation fields, flush the inherited caches, and disable the MMU before copying the initrd through physical addresses. This removes the dependency on an inherited iBEC mapping for the destination. Clear the watchdog in assembly before stack setup. Exercise protected high RAM during validation and check word and tail copies through the complete P105 initrd size. Assisted-by: LLM
Python config directories carry development objects such as python.o. These relocatable files lack executable float-ABI flags and stop ARMv7 recovery assembly when copied with the standard library. Exclude the versioned config directories while retaining the strict ELF checks for runtime executables and extension modules. Assisted-by: LLM
shaynelegault
marked this pull request as ready for review
November 7, 2026 05:07
stuart902
pushed a commit
to stuart902/orchard
that referenced
this pull request
Nov 9, 2026
Select ARM/v7 or ARM64 tool recipes explicitly and keep their outputs in separate caches. Pin Debian's ARMHF BusyBox package and verify each finished tool's ELF architecture and static linkage. Native builds require a host whose architecture matches the selected target. Assisted-by: LLM (cherry picked from commit 8d859a3, OrchardLinux#82)
stuart902
pushed a commit
to stuart902/orchard
that referenced
this pull request
Nov 9, 2026
Use board-owned handoff data to compile the ARM32 staging loader. Preserve Cascadia's cache/MMU handoff and require executable code at the upload address. A checked configuration places the supplied external initramfs in reserved RAM before entering Linux through its edited DTB. Bound the zImage decompressor workspace and preserve the kernel bytes. Add synthetic layout tests and a Linux fixture that exercises the actual loader C copy and rejection paths. Source provenance is recorded in NOTICE. The external-initramfs handoff still requires physical qualification. Assisted-by: LLM (cherry picked from commit 12928a3, OrchardLinux#82; left out here: the chips/s5l8942x.toml, devices/p105/device.toml and README notes)
stuart902
pushed a commit
to stuart902/orchard
that referenced
this pull request
Nov 9, 2026
Platform layers use the declared kernel image and the platform's own early storage modules (an empty list for built-in storage), and check the root architecture they are asked for. Static recovery tools are built per architecture into separate cache entries; the Cascadia loader is built from the board's profile; RAM payloads of a Cascadia platform are assembled for one selected board through the Cascadia producer, without Pongo. The ELF reader handles ELF32 and ELF64 alike. Assisted-by: LLM Adapted from commit 02dcc19 (OrchardLinux#82). Left out here: board selection for distribution builds (orchard.inputs --device, selects-device), per-board platform layers, the recovery's runtime staging and its producer-contract text. arm64 platform layers keep their platform.json and receipt unchanged; the ARMv7 layer holds every board's DTB.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ARMv7 builds can resolve native recovery tools and assemble a board-selected Cascadia payload through Orchard's producers. Input records carry the selected architecture, kernel image, loader and tools. ARM64 consumers retain their shared defaults.
The loader validates its checksummed configuration, captures the relocation fields, flushes caches and disables the inherited MMU before copying the initramfs into reserved physical RAM. Assembly clears the watchdog before stack setup. Entry and decompressor bounds remain checked.
Recovery binds the host USB handoff to the observed device and template, then checks the live FDT compatible and Linux boot ID through serial bootstrap and SSH. P105 stages ECM and serial with SFTL modular and manually activated. Python staging excludes versioned
config-*directories, whose build-support objects otherwise trip the runtime ELF checks. Runtime executables and extension modules retain the strict architecture and ABI checks.Validation at
8af730ea:ET_RELobject that stopped the current native release build. The repaired selector also processed its real ARMv7 base archive, excluding the build-support directory and accepting all 91 ELF files in the resolved runtime closure.3efd9e12passed the complete 697-case local suite with one platform skip. The new exact-head run 42328712306 passed both complete Python suites and native smoke.P105 hardware qualification remains pending. Host
51ce3cbetransferred both the full public image2dd9027b382c0b7e2c5e1065a73d14832611e860dbcd801d7fedc551285cabb6and its 32,580-byte loader/configuration prefix, with endpoint identity checked between transfers. That image produced no visible text or Linux USB. The preserved legacy loader/kernel/recovery pair reached Linux USB and boot text through the same raw iBEC and kloader.A private diagnostic image (
f34eeab02c1d8cb98379bc5acad21cdfcfac727a7c120da5a62b4744724ff9f0) added guarded framebuffer markers to the public loader. Its kernel, DTB, initramfs and configuration matched the public image before host identity binding. The owner observed all seven checkpoints, including the final green marker after initramfs relocation, immediately before the kernel branch. Linux USB still timed out. Runtime-bound image and trigger hashes were recomputed successfully. This locates the observed progress through the loader; kernel execution and the remaining startup failure are unresolved. The diagnostic remains private, and qualification of the submitted image remains pending.The diagnostic issued zero Linux runtime or storage-helper commands, with NAND programming compiled out. After the owner returned to iOS, five bounded native reads verified the LwVM pair and CRC, the unchanged Linux header, and 40 GiB Data geometry. Temporary entry files were already absent and the connection closed.
The public startup still needs USB serial and authenticated SSH checks on P105. The current native recovery and desktop archives assembled successfully and passed their audits. Omarchy-A #29 still awaits maintainer approval for its GitHub workflow and its own device checks.
The on-device launcher has its own qualification in #84. Minimal Linux #6 and Omarchy-A #29 accompany the distribution contract. Public P105 installation stays gated. P105 is the owner's test board; Henrik or other owners cover other devices.
Proposed changelog text awaits owner approval: ARMv7: build Cascadia recovery payloads and native tools through the distribution producers.