Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

flash.sh: backup rom first, revert to backup if flashing fails for whatever reasons #1870

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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