#!/bin/sh # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2026, Google LLC. # Check persistent backup instance across guest crash/reboot # REBOOT: 1 TRACEDIR="/sys/kernel/tracing" # Ensure both boot_map/trace and backup/trace files exist if [ ! -f "$TRACEDIR/instances/boot_map/trace" ]; then echo "FAIL: boot_map/trace file missing" exit 1 fi if [ ! -f "$TRACEDIR/instances/backup/trace" ]; then echo "FAIL: backup/trace file missing" exit 1 fi # Check if BOOT1_MARKER is in boot_map/trace (indicates second boot) if grep -q "BOOT1_MARKER" "$TRACEDIR/instances/boot_map/trace" 2>/dev/null; then # Second boot: verify BOOT1_MARKER was copied into backup/trace from Boot 1 if grep -q "BOOT1_MARKER" "$TRACEDIR/instances/backup/trace" 2>/dev/null; then echo "PASS: persistent-02-backup-instance" exit 0 else echo "FAIL: BOOT1_MARKER found in boot_map/trace" \ "but missing from backup/trace on second boot" exit 1 fi fi # First boot: write BOOT1_MARKER to boot_map and reboot via sysrq-trigger echo "BOOT1_MARKER" > "$TRACEDIR/instances/boot_map/trace_marker" sync # Trigger reboot to restart into second boot echo b > /proc/sysrq-trigger 2>/dev/null || echo c > /proc/sysrq-trigger 2>/dev/null || true sleep 5 echo "FAIL: reboot trigger failed on first boot" exit 1