Skip to content

Releases: 1vivy/gbl-chainload

gbl-chainload v2.3.4

Choose a tag to compare

@github-actions github-actions released this 24 May 07:58
3f19d7a

Highlights:

  • Engine rework — one EFI for every install profile. The three per-mode
    base EFIs (mode-0.efi, mode-1.efi, mode-2.efi) collapse into a
    single gbl-chainload.efi. Mode-N selection is now a runtime GBLP1
    manifest bit (WantFakelockHook 0x0001, WantProfileSpoof 0x0002) read
    by the loader instead of a per-binary compile flag (GBL_MODE).
    DynamicPatchLib restructured by intent: abl_permissive/ (always-on,
    mandatory), oem/oplus/ (host-only, fail-safe), retired/. Patch1's
    EFISP recursion guard retires in favour of a runtime BlockIoHook that
    refuses reads/writes on EFISP partitions outright.
  • Rust tooling consolidation. The seven C host tools (fv-unwrap,
    abl-patcher, gbl-pack, gbl-commit, vbmeta-graft, mode2-profile,
    gblp1-inspect) collapse into a single Rust multicall gbl binary with
    subcommand dispatch (gbl <unwrap|patch|pack|commit|avb|mode2|inspect>).
    Core libraries (PE sanity, GBLP1 parser, AVB walk, DynamicPatchLib's
    always-on abl_permissive set, mode-2 profile codec) are now Rust
    crates linked into both the EFI staticlib and the host multicall.
  • gbl-chainload.efi is now a release artifact. Releases ship the
    firmware payload alongside the installer ZIPs and host-tool bundles, so
    fastboot stage + oem boot-efi testing no longer requires a local
    build.
  • Release confidence checks. CI now verifies parity between
    freshly-built and zip-vendored artifacts (EFI + recovery gbl), plus
    submodule pointer reachability from each submodule's origin/main.
    Catches stale vendored artifacts and unpushed submodule commits before
    they ship.
  • One-command release prep. scripts/release.sh X.Y.Z orchestrates
    the VERSION bump, CHANGELOG scaffold, zip submodule refresh, and
    branch + PR creation. Author fills in highlights, merges, pushes tag.

Fixes:

  • gbl commit now reads the destination back through an uncached
    (posix_fadvise(POSIX_FADV_DONTNEED)) path before declaring success.
    Catches blocked writes from kernel write guards (e.g. Baseband Guard
    LSM) that otherwise mask non-persisting writes with cache hits.

Upgrade notes:

  • The --no-mode1 flag and GBL_MODE=N build flag are removed; pick the
    install profile via the ZIP (mode-0/1/2-install).
  • Host tools: gbl <sub> replaces seven binaries. Old per-tool argv shape
    is preserved 1:1 (each subcommand keeps the original CLI / exit codes).
  • Test fixtures: tests/host/goldens/ removed — the Rust impl is
    authoritative post-migration; tests now use parser/roundtrip/schema
    regression checks instead of byte-identity parity.

What's Changed

Other

  • Engine rework: capability-driven single EFI by @1vivy in #45
  • Rust tooling consolidation: invert core libs + single gbl multicall by @1vivy in #44
  • cleanup: release confidence + parity (CI hardening, goldens retirement) by @1vivy in #46
  • release: 2.3.4 by @1vivy in #47
  • scripts/build.sh: fix exit code when --no-recovery / --no-host by @1vivy in #48
  • release.yml: stage vendored EFI as release asset (no rebuild) by @1vivy in #49

Full Changelog: v2.2.2...v2.3.4

gbl-chainload v2.2.2

Choose a tag to compare

@github-actions github-actions released this 21 May 11:56

Highlights:

  • All ZIPs: Reworked UI, user prompts, and changed up device directory.
  • ZIP mode-1 installer: Auto graft recovery.
  • Add host tool instructions, and vbmeta graft python wrapper.

Fixes:

  • Fastboot menu warns user correctly about ungrafted partitions now.

What's Changed

Other

  • fix(avb): fastboot menu warning matches diag broken-chain verdict by @1vivy in #38
  • Merge recovery graft into mode-1 OTA ZIP flow by @1vivy in #39

Full Changelog: v2.2.1...v2.2.2

DON'T FLASH ME - MISSING TOOLS TO BUILD EFISP PAYLOAD 2.1.0

Choose a tag to compare

@1vivy 1vivy released this 17 May 03:21
2be147b

Mode 1 is like gbl_root_canoe's patched ABL but uses hooks to spoof ABL as locked, then does more minimal binary patches (to trick libavb and allow flashing). No need to carry locked unlocked state differently throughout binary.

Also ability to insert and patch new ABL from device or host.

CN users beware lock state will never change while gbl-chainload is flashed. But, I have blocked all writes to oplusreserve1 so you never lose token. Fyi, token loss only occurs when you fastboot flashing lock through stock bootloader so you can lose it on any GBL/efisp mod that doesn't block writes.

Backup > loss prevention. Always backup oplusreserve1

This still requires custom recovery and other partitions to have valid vbmeta footer! Tool coming soon, but ones on CN forums work well and do same thing.

Mode 0 is just for developers who want to investigate how locking/unlocking work. Won't save you from red screen (no libavb patch), but can unlock, load custom recovery, and pull logs with scripts/test-device-manual.sh

Auto flag makes boot enter fastbootlib by default. Thus can automate testing.

Fastbootlib additions:

  • Full flashing capability. (I personally tested flashing efisp). Seems stock bootloader is faster for big images.
  • Warning if custom recovery or such has empty/unsigned vbmeta.
  • OEM unlock toggle
  • Boot ESP option from external USB (untested)
  • Many more getvars

Important fastbootlib usage!
To test boot efi:
fastboot stage xxx.efi + fastboot oem boot-efi
To escape fastbootlib / continue boot:
Escape on menu OR fastboot oem escape

Proceed with caution! Always test boot first!