uzbek-plus/b5a/A4-write.sh
q 105bef466a Project Aurora: mainline ARM64 Linux on JZ08AU (MSM8916) LTE modem
Sanitized research log, build/reproducibility docs, DTS, kernel configs,
patches, initramfs sources, bootchain migration plans and test logs.
B5 direct boot PASS; B6 modem lifecycle in progress.
No dumps, NV/EFS, vendor firmware or device identifiers included.
2026-09-30 17:23:18 +03:00

53 lines
3.5 KiB
Bash
Executable file

#!/bin/bash
# B5a A4 — the ONLY writes: boot, then aboot. Run on 480s ONLY after explicit GO.
# Stops at the first failed gate. Never runs `edl reset`. Board must be in 05c6:9008.
cd ~/doc/modem/jz08-aurora || exit 1
L=firehose/007050e100000000_394a2e47cf830150_fhprg_peek.bin
O=logs/b5a/A4 ; A3=logs/b5a/A3 ; mkdir -p $O
BOOT_NEW=b5a/boot-emmc1-16MiB.img ; BOOT_NEW_SHA=e9579f33c7304cd47f487f2b61cd9226dc04fd3a63775d62b4b95fc15bd3ebff
ABOOT_NEW=b5a/aboot-lk1st-aurora-autoboot.pad1M ; ABOOT_NEW_SHA=3b8cd2667837fc7083cb28991d849f9b408a07fa743bfd05eafee7b053760f85
BOOT_OLD_SHA=1342def7e0f0c245385d4bac2852d361537a520abd8a45708618983cdab43c0a
ABOOT_OLD_SHA=e4addbf80eb86f6ad8b112e5a3115c7b721bbd2cca8cc109d135aeceb6194482
die(){ echo "STOP: $*"; exit 1; }
sha(){ sha256sum "$1" | cut -d' ' -f1; }
E(){ edl --loader=$L "$@"; }
echo "== G0 inputs"
[ "$(sha $L)" = 53f193500c03248f0d671ab57bfe9ca8a42967e97f28403294b4b3f854075aca ] || die loader
[ "$(sha $BOOT_NEW)" = $BOOT_NEW_SHA ] || die boot-candidate-sha
[ "$(sha $ABOOT_NEW)" = $ABOOT_NEW_SHA ] || die aboot-candidate-sha
[ $(stat -c %s $BOOT_NEW) = 16777216 ] && [ $(stat -c %s $ABOOT_NEW) = 1048576 ] || die sizes
lsusb | grep -q 05c6:9008 || die "no 9008"
echo "== G1 identity + geometry"
E printgpt > $O/00-printgpt.log 2>&1 || die printgpt
grep -aq "Serial: *0x<SAHARA_SERIAL>" $O/00-printgpt.log || grep -aq "Mode detected: firehose" $O/00-printgpt.log || die serial
grep -a "^boot:" $O/00-printgpt.log | grep -q "Offset 0x000000000c18c000, Length 0x0000000001000000" || die boot-geometry
grep -a "^aboot:" $O/00-printgpt.log | grep -q "Offset 0x0000000008100000, Length 0x0000000000100000" || die aboot-geometry
E rs 0 34 $O/pre-gptp.bin >/dev/null 2>&1 ; cmp $O/pre-gptp.bin $A3/gpt-primary-34.bin || die gpt-primary-changed
E r boot $O/pre-boot.bin >/dev/null 2>&1 ; [ "$(sha $O/pre-boot.bin)" = $BOOT_OLD_SHA ] || die boot-not-stock
E r aboot $O/pre-aboot.bin >/dev/null 2>&1 ; [ "$(sha $O/pre-aboot.bin)" = $ABOOT_OLD_SHA ] || die aboot-not-e4addbf8
echo "== W1 boot := emmc1 (LBA 396384, 32768 sectors)"
E w boot $BOOT_NEW > $O/10-boot-write.log 2>&1 ; echo "rc=$?"; grep -a "Wrote" $O/10-boot-write.log
E r boot $O/11-boot-readback.bin > $O/11-boot-readback.log 2>&1 || die boot-readback-rc
sha256sum $BOOT_NEW $O/11-boot-readback.bin
cmp $BOOT_NEW $O/11-boot-readback.bin || die "BOOT READBACK MISMATCH — do NOT write aboot, do NOT reboot"
echo BOOT_MATCH
echo "== W2 aboot := lk1st autoboot (LBA 264192, 2048 sectors)"
E w aboot $ABOOT_NEW > $O/20-aboot-write.log 2>&1 ; echo "rc=$?"; grep -a "Wrote" $O/20-aboot-write.log
E r aboot $O/21-aboot-readback.bin > $O/21-aboot-readback.log 2>&1 || die aboot-readback-rc
sha256sum $ABOOT_NEW $O/21-aboot-readback.bin
cmp $ABOOT_NEW $O/21-aboot-readback.bin || die "ABOOT READBACK MISMATCH — do NOT reboot; roll back aboot"
echo ABOOT_MATCH
echo "== V post-write: everything else == A3"
E rs 0 34 $O/post-gptp.bin >/dev/null 2>&1; cmp $O/post-gptp.bin $A3/gpt-primary-34.bin || die gptp
E rs 7634911 33 $O/post-gptb.bin >/dev/null 2>&1; cmp $O/post-gptb.bin $A3/gpt-backup-33.bin || die gptb
E rs 305184 1024 $O/post-tzbak.bin >/dev/null 2>&1; cmp $O/post-tzbak.bin $A3/tzbak-305184.bin || die tzbak
for p in sbl1 rpm tz hyp recovery modemst1 modemst2 fsg fsc persist; do
E r $p $O/post-$p.bin >/dev/null 2>&1; cmp $O/post-$p.bin $A3/$p.bin || die "$p changed"; echo "$p == A3"
done
(cd $O && sha256sum *.bin > SHA256SUMS)
echo "B5A_WRITES_VERIFIED — power off fully (USB, then battery) before first autonomous boot"