Skip to content

Commit

Permalink
flash.sh: take a backup of known good firmware state to rollback to, …
Browse files Browse the repository at this point in the history
…revert to rollback if flashing fails for whatever reason.

Warn sleeps and give output. Removed recovery shell access after warning again that we are in known good state (TPMTOTP/HOTP will succeed on next reboot.

TODO: remove some output as part of subsequent QUIET cleanup

Signed-off-by: Thierry Laurion <[email protected]>
  • Loading branch information
tlaurion committed Nov 30, 2024
1 parent 99157f2 commit eee1d53
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions initrd/bin/flash.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,12 @@ case "$CONFIG_FLASH_OPTIONS" in
esac

flash_rom() {
ROM=$1
#backup firmware to rollback into in all failed attempts
warn "Taking a backup of firmware in case we need to rollback..."
$CONFIG_FLASH_OPTIONS -r /tmp/${CONFIG_BOARD}_bak.rom

ROM=$1 # ROM file to flash

if [ "$READ" -eq 1 ]; then
$CONFIG_FLASH_OPTIONS -r "${ROM}" \
|| recovery "Backup to $ROM failed"
Expand All @@ -47,9 +52,13 @@ flash_rom() {
dd if=/tmp/pchstrp9.bin bs=1 count=4 seek=292 of=/tmp/${CONFIG_BOARD}.rom conv=notrunc >/dev/null 2>&1
fi

warn "Do not power off computer. Updating firmware, this will take a few minutes"
warn "Do not power off computer. Updating firmware, this could take a few minutes"
$CONFIG_FLASH_OPTIONS -w /tmp/${CONFIG_BOARD}.rom 2>&1 \
|| recovery "$ROM: Flash failed"
|| warn "$ROM: Flash failed, restoring rollback fimrware backup..." \
&& $CONFIG_FLASH_OPTIONS -w /tmp/${CONFIG_BOARD}_bak.rom \
&& warn "$ROM: Flash failed, restored previous known good firmware state."
#TODO: there is a lot of output from flashprog here to suppress???
# But at least we didn't cause a brick...
fi
}

Expand Down Expand Up @@ -104,6 +113,6 @@ fi
flash_rom $ROM

# don't leave temporary files lying around
rm -f /tmp/flash.sh.bak
rm -f /tmp/flash.sh.bak /tmp/${CONFIG_BOARD}_bak.rom

exit 0

0 comments on commit eee1d53

Please sign in to comment.