uzbek-plus/b12/b12r/b12r-boot.sh

45 lines
4.5 KiB
Bash

#!/bin/sh
# 480s: B12R RAM test. b12q-boot.sh K normal|off|failtest — waits for lk1st fastboot, `fastboot boot` the variant, then checks over telnet.
# Nothing is flashed. normal: expect Alpine PID1 on p27; off/failtest: expect LFS rescue (stage0 fallback) with p27 untouched/relocked.
K=$1; V=$2; case "$V" in normal) IMG=aurora-b12r.img;; off) IMG=aurora-b12q-off.img;; failtest) IMG=aurora-b12q-failtest.img;; cold) IMG=;; *) echo "usage: $0 K normal|off|failtest"; exit 2;; esac
cd ~/doc/modem/jz08-aurora; O=logs/b12/b12r/$V$K; mkdir -p $O; [ -n "$IMG" ] && IMG=b12/b12r/out/$IMG
A=$O/host-actions.txt; act() { echo "$(date -u +%H:%M:%S) $*" | tee -a $A; }
tn() { { sleep 1; sed "s/\$/\r/" "$1"; sleep $2; } | ncat 172.16.42.1 23 | tr -d "\000\r"; }
if [ $V != cold ]; then
grep " $(basename $IMG)\$" b12/b12r/out/SHA256SUMS | sed "s| | b12/b12r/out/|" | sha256sum -c || exit 1
act "B12R $V$K: waiting for fastboot <EMMC_SERIAL> (RESET held at power-on)"
i=0; until fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL>; do i=$((i+1)); [ $i -ge 900 ] && { act "ABORT: no fastboot"; exit 1; }; sleep 2; done
act "fastboot present"; { fastboot boot $IMG 2>&1; echo "rc=$?"; } | tee -a $A
else
act "B12R cold$K: waiting for normal power-on WITHOUT RESET (cache B12R 59272cd3)"
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do fastboot devices 2>/dev/null | grep -q <EMMC_SERIAL> && { act "ABORT: board in fastboot - RESET held?"; exit 1; }; i=$((i+1)); [ $i -ge 1800 ] && { act "ABORT: no NCM"; exit 1; }; sleep 1; done
fi
i=0; until ping -c1 -W1 172.16.42.1 >/dev/null 2>&1; do i=$((i+1)); [ $i -ge 240 ] && { act "ABORT: NCM not up"; exit 1; }; sleep 1; done; act "NCM ping ok"
printf 'grep -E "START OK|FAIL in|rollback|SAFETY" /run/aurora-modem/lifecycle.log | tail -2\n' > $O/.w
i=0; until tn $O/.w 3 | grep -qE "^\[[0-9.]+\] .*(=== START OK|FAIL in|rollback)"; do i=$((i+1)); [ $i -ge 80 ] && { act "no START OK/FAIL after ~12 min"; break; }; sleep 6; done
act "modem: $(tn $O/.w 3 | grep -E '^\[[0-9.]+\]' | tail -2 | tr '\n' ' ')"
printf 'grep -E "AP ENABLED|FAIL" /run/aurora-wifi/wifi.log | tail -1\n' > $O/.a
i=0; until tn $O/.a 3 | grep -qE "^\[[0-9.]+\] (=== AP ENABLED|FAIL)"; do i=$((i+1)); [ $i -ge 30 ] && break; sleep 6; done
act "wifi: $(tn $O/.a 3 | grep -E '^\[[0-9.]+\]' | tail -1)"
cat > $O/.c <<'C'
echo SNAP-BEGIN; cat /proc/uptime; uname -a; cat /proc/cmdline
echo ---pid1; ls -l /proc/1/exe; cat /proc/1/cmdline | tr '\0' ' '; echo; ls -l /sbin/init; cat /etc/alpine-release 2>/dev/null; cat /etc/os-release 2>/dev/null | head -2
echo ---root; grep -E " / |mmcblk0p27|/alpine" /proc/mounts; df -k / | tail -1; cat /proc/mounts
echo ---stage0; dmesg | grep -E "aurora-stage0|aurora-ro|aurora-bootok|stage0"; cat /var/lib/aurora/boot-attempts 2>/dev/null; cat /var/lib/aurora/stage0-fsck.txt 2>/dev/null | tail -1
echo ---openrc; rc-status -a 2>/dev/null; rc-status --crashed 2>/dev/null
echo ---ro; for x in /dev/mmcblk0 /dev/mmcblk0p* /dev/mmcblk0boot0 /dev/mmcblk0boot1; do printf "%s=%s " ${x#/dev/} $(blockdev --getro $x); done; echo
echo ---modem; /usr/libexec/aurora/svc/aurora-modem status 2>/dev/null || /etc/init.d/aurora-modem status; grep -E "SAFETY|START OK" /run/aurora-modem/lifecycle.log
echo ---ping; ping -c4 -W3 -I wwan0 77.88.8.8 | tail -2
echo ---wifi; iw dev; grep -E "AP ENABLED" /run/aurora-wifi/wifi.log; for r in /sys/class/remoteproc/*; do echo "RP $(cat $r/name)=$(cat $r/state)"; done
echo ---display; cat /run/aurora-display/display.log 2>/dev/null | tail -3; cat /sys/class/tty/tty0/active; cat /sys/class/backlight/backlight/bl_power; cat /sys/class/drm/card0-SPI-1/enabled
echo ---charger; grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug; head -3 /sys/kernel/debug/pm8916_lbc/state
echo ---apk; apk --version 2>/dev/null && apk info 2>/dev/null | wc -l; cat /root/persist-test.txt 2>/dev/null
echo ---procs; ps -o pid,user,args 2>/dev/null | grep -vE "\[|ps -o" | head -40
echo ---mem; free
echo ---emmc; cat /sys/block/mmcblk0/stat; for p in /sys/class/block/mmcblk0p* /sys/class/block/mmcblk0boot0 /sys/class/block/mmcblk0boot1; do s=$(awk '{print $5}' $p/stat); [ "$s" != 0 ] && echo "$(basename $p) writes=$s"; done
echo SNAP-END
C
tn $O/.c 30 > $O/snapshot.txt; act "snapshot: $(grep -c SNAP-END $O/snapshot.txt) end"
grep -A3 -- "---pid1" $O/snapshot.txt | tail -3 | tee -a $A; grep -E "^/dev/mmcblk0p27 / |^rootfs / " $O/snapshot.txt | tee -a $A; grep -E "writes=" $O/snapshot.txt | tee -a $A
grep -E "aurora-stage0" $O/snapshot.txt | tail -2 | tee -a $A
act "B12R $V$K END"