abl-exorcist-assembler
abl-exorcist-assembler is the host-side library and command-line tool for
constructing payloads consumed by the
abl-exorcist AArch64 shim.
The CLI accepts a raw arm64 Image, Image.gz, Image.zst, or Linux EFI zboot
kernel and canonicalizes it before assembly.
To append a kernel package to a raw device-appropriate shim:
To construct the ABLXRD1 Android-ramdisk transport used for an external
initrd:
With the default std feature, the library exposes kernel normalization
followed by assembly, without filesystem policy:
let kernel = canonicalize_kernel?;
let ramdisk = assemble_ramdisk?;
The assembly functions assemble(kernel, shim) and
assemble_ramdisk(kernel, initrd) take an already-normalized raw ARM64 Image
and return owned payload bytes. Both assembly functions support no_std + alloc
with default-features = false. Kernel normalization and the CLI require the
default std feature. assemble_ramdisk requires a nonempty initrd.
Assembly compresses the kernel as a raw LZ4 block using the portable Rust
lz4_flex encoder. This uses ordinary LZ4 rather than LZ4 HC, so payloads may
be larger than with the previous encoder. The initrd bytes pass through unchanged.
Run abl-exorcist-assembler --help for usage or --version for its version.
Generate the manual page with cargo build -p abl-exorcist-assembler --features manpage.
The build script writes abl-exorcist-assembler.1 to Cargo's OUT_DIR, normally
target/debug/build/abl-exorcist-assembler-*/out/.
Device selection, shim provenance, Android boot image geometry, partition writes, and flashing deliberately belong to higher-level consumers.
License
This project is licensed under the GNU General Public License version 3.0
only. See LICENSE for the full license text.