Repository navigation
Releases: 1vivy/gbl-chainload
Release list
gbl-chainload v2.3.4
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
singlegbl-chainload.efi. Mode-N selection is now a runtime GBLP1
manifest bit (WantFakelockHook0x0001,WantProfileSpoof0x0002) 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 runtimeBlockIoHookthat
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 multicallgblbinary with
subcommand dispatch (gbl <unwrap|patch|pack|commit|avb|mode2|inspect>).
Core libraries (PE sanity, GBLP1 parser, AVB walk, DynamicPatchLib's
always-onabl_permissiveset, mode-2 profile codec) are now Rust
crates linked into both the EFI staticlib and the host multicall. gbl-chainload.efiis now a release artifact. Releases ship the
firmware payload alongside the installer ZIPs and host-tool bundles, so
fastbootstage+oem boot-efitesting no longer requires a local
build.- Release confidence checks. CI now verifies parity between
freshly-built and zip-vendored artifacts (EFI + recoverygbl), plus
submodule pointer reachability from each submodule'sorigin/main.
Catches stale vendored artifacts and unpushed submodule commits before
they ship. - One-command release prep.
scripts/release.sh X.Y.Zorchestrates
the VERSION bump, CHANGELOG scaffold, zip submodule refresh, and
branch + PR creation. Author fills in highlights, merges, pushes tag.
Fixes:
gbl commitnow 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-mode1flag andGBL_MODE=Nbuild 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
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
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!