DF-5419 / capture_logs.sh
#!/bin/sh # Capture clean per-phase logs for the evidence packs. # Requires: build.sh done, fixA/fixB variants present in /root/ppbhx. set -e SRC=/usr/src/sys/bus/ppbus/ppb_1284.c DIR=/root/ppbhx OUT=/tmp/ppbhx-logs mkdir -p "$OUT" cd /tmp/ppbhx-build clearmsg () { sysctl -w kern.msgbuf_clear=1 >/dev/null 2>&1 || true; } savePPBHX () { dmesg | grep 'PPBHX' > "$OUT/$1"; } echo "== baseline (pristine production source) ==" cmp "$SRC" "$DIR/../ppbhx/ppb_1284.pristice 2>/dev/null" || true rm -f *.o ppbharness.ko make SYSDIR=/usr/src/sys > "$OUT/build_baseline.log" 2>&1 clearmsg kldload ./ppbharness.ko dmesg > "$OUT/run_env_after_load.log" savePPBHX run_baseline.log kldunload ppbharness echo "== fixA (DF-5418 fix only) ==" cp "$DIR/ppb_1284.fixA.c" "$SRC" rm -f *.o ppbharness.ko make SYSDIR=/usr/src/sys > "$OUT/fixA_build.log" 2>&1 clearmsg kldload ./ppbharness.ko savePPBHX fixA_run.log kldunload ppbharness echo "== fixB (DF-5418 + DF-5419 fixes) ==" cp "$DIR/ppb_1284.fixB.c" "$SRC" rm -f *.o ppbharness.ko make SYSDIR=/usr/src/sys > "$OUT/fixB_build.log" 2>&1 clearmsg kldload ./ppbharness.ko savePPBHX fixB_run.log kldunload ppbharness echo "== restore pristine ==" cp "$SRC.hxorig" "$SRC" cmp "$SRC" "$SRC.hxorig" && echo restored echo "== environment ==" { uname -a cc --version 2>/dev/null | head -1 kldstat sysctl kern.osrelease kern.version 2>/dev/null sha256 "$SRC" } > "$OUT/env.txt" ls -la "$OUT" |