Files
scripts/coreboot-t440p/steps/backup_bios.sh
T
2026-04-14 08:55:33 -07:00

76 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
# Step: Verify BIOS backup integrity (with per-chip retry)
# Re-read a single chip until two reads match or user gives up
_reread_chip() {
_label="$1" # "4mb" or "8mb"
_desc="$2" # human-readable description
while true; do
warn "$_desc reads do NOT match. The chip may not be reading reliably."
echo ""
echo " 1) Re-seat programmer on $_desc chip and retry"
echo " 2) Abort"
echo ""
printf "${CYAN}Choice [1-2]:${NC} "
read -r _choice
case "$_choice" in
1)
info "Re-reading $_desc chip (read 1 of 2)..."
run_cmd "sudo flashrom --programmer ch341a_spi -r ${_label}_backup1.bin" || return 1
info "Re-reading $_desc chip (read 2 of 2)..."
run_cmd "sudo flashrom --programmer ch341a_spi -r ${_label}_backup2.bin" || return 1
if diff "${_label}_backup1.bin" "${_label}_backup2.bin" >/dev/null 2>&1; then
success "$_desc reads now match."
return 0
fi
;;
*)
return 1
;;
esac
done
}
step_backup_bios() {
section "Verify BIOS Backups"
cd "$WORK_DIR" || return 1
info "Verifying 4MB chip reads match..."
if diff 4mb_backup1.bin 4mb_backup2.bin >/dev/null 2>&1; then
success "4MB chip reads are identical."
else
_reread_chip "4mb" "4MB (top)" || return 1
fi
info "Verifying 8MB chip reads match..."
if diff 8mb_backup1.bin 8mb_backup2.bin >/dev/null 2>&1; then
success "8MB chip reads are identical."
else
_reread_chip "8mb" "8MB (bottom)" || return 1
fi
# Validate file sizes
_size_4mb=$(wc -c < 4mb_backup1.bin)
_size_8mb=$(wc -c < 8mb_backup1.bin)
info "4MB chip size: $_size_4mb bytes (expected $SIZE_4MB)"
info "8MB chip size: $_size_8mb bytes (expected $SIZE_8MB)"
if [ "$_size_4mb" -ne "$SIZE_4MB" ]; then
warn "4MB chip size mismatch. Expected $SIZE_4MB bytes, got $_size_4mb."
if ! prompt_yes_no "Continue anyway?"; then
return 1
fi
fi
if [ "$_size_8mb" -ne "$SIZE_8MB" ]; then
warn "8MB chip size mismatch. Expected $SIZE_8MB bytes, got $_size_8mb."
if ! prompt_yes_no "Continue anyway?"; then
return 1
fi
fi
success "All BIOS backups verified."
}