mirror of
https://github.com/linuxboot/heads.git
synced 2025-04-09 04:14:34 +00:00
Merge pull request #1581 from JonathonHall-Purism/flash-gui-errors
Show error messages for various media errors in flash-gui.sh
This commit is contained in:
commit
be1835b9ad
@ -60,10 +60,19 @@ while true; do
|
||||
--yesno "You will need to insert a USB drive containing your BIOS image (*.zip or\n*.$UPDATE_PLAIN_EXT).\n\nAfter you select this file, this program will reflash your BIOS.\n\nDo you want to proceed?" 0 80); then
|
||||
mount_usb
|
||||
if grep -q /media /proc/mounts; then
|
||||
# 'find' parameters to match desired ROM extensions
|
||||
FIND_ROM_EXTS=(\( -name "*.$UPDATE_PLAIN_EXT" -o -type f -name "*.zip" \))
|
||||
if [ "${CONFIG_BOARD%_*}" = talos-2 ]; then
|
||||
find /media ! -path '*/\.*' -type f -name "*.$UPDATE_PLAIN_EXT" | sort >/tmp/filelist.txt
|
||||
else
|
||||
find /media ! -path '*/\.*' -type f \( -name "*.$UPDATE_PLAIN_EXT" -o -type f -name "*.zip" \) | sort >/tmp/filelist.txt
|
||||
# Show only *.tgz on talos-2 (lacks ZIP update package support)
|
||||
FIND_ROM_EXTS=(-name "*.$UPDATE_PLAIN_EXT")
|
||||
fi
|
||||
# Media errors can cause this to fail (flash drive pulled, filesystem
|
||||
# corruption, etc.)
|
||||
if ! find /media ! -path '*/\.*' -type f "${FIND_ROM_EXTS[@]}" | sort >/tmp/filelist.txt; then
|
||||
whiptail --title 'Unable to read USB drive' \
|
||||
--msgbox "The USB drive is not readable. Check the drive, reformat, or try a
|
||||
\ndifferent drive." 16 60
|
||||
exit 1
|
||||
fi
|
||||
file_selector "/tmp/filelist.txt" "Choose the ROM to flash"
|
||||
if [ "$FILE" == "" ]; then
|
||||
@ -72,12 +81,16 @@ while true; do
|
||||
PKG_FILE=$FILE
|
||||
fi
|
||||
|
||||
# Display the package file without the "/media/" prefix
|
||||
PKG_FILE_DISPLAY="${PKG_FILE#"/media/"}"
|
||||
|
||||
# Unzip the package
|
||||
PKG_EXTRACT="/tmp/flash_gui/update_package"
|
||||
rm -rf "$PKG_EXTRACT"
|
||||
mkdir -p "$PKG_EXTRACT"
|
||||
|
||||
# is an update package provided?
|
||||
if [ -z "${PKG_FILE##*.zip}" ]; then
|
||||
# Unzip the package
|
||||
PKG_EXTRACT="/tmp/flash_gui/update_package"
|
||||
rm -rf "$PKG_EXTRACT"
|
||||
mkdir -p "$PKG_EXTRACT"
|
||||
# If extraction fails, delete everything and fall through to the
|
||||
# integrity failure prompt. This is the most likely path if the ROM
|
||||
# was actually corrupted in transit. Corrupting the ZIP in a way that
|
||||
@ -91,19 +104,19 @@ while true; do
|
||||
# check file integrity
|
||||
if ! (cd "$PKG_EXTRACT" && sha256sum -cs sha256sum.txt); then
|
||||
whiptail --title 'ROM Integrity Check Failed! ' \
|
||||
--msgbox "Integrity check failed in\n$PKG_FILE.\nDid not flash.\n\nPlease check your file (e.g. re-download).\n" 16 60
|
||||
--msgbox "Integrity check failed in\n$PKG_FILE_DISPLAY.\nDid not flash.\n\nPlease check your file (e.g. re-download).\n" 16 60
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# The package must contain exactly one *.rom file, flash that.
|
||||
if ! PACKAGE_ROM="$(single_glob "$PKG_EXTRACT/"*."$UPDATE_PLAIN_EXT")"; then
|
||||
whiptail --title 'BIOS Image Not Found! ' \
|
||||
--msgbox "A BIOS image was not found in\n$PKG_FILE.\n\nPlease check your file (e.g. re-download).\n" 16 60
|
||||
--msgbox "A BIOS image was not found in\n$PKG_FILE_DISPLAY.\n\nPlease check your file (e.g. re-download).\n" 16 60
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! whiptail $BG_COLOR_WARNING --title 'Flash ROM?' \
|
||||
--yesno "This will replace your current ROM with:\n\n${PKG_FILE#"/media/"}\n\nDo you want to proceed?" 0 80; then
|
||||
--yesno "This will replace your current ROM with:\n\n$PKG_FILE_DISPLAY\n\nDo you want to proceed?" 0 80; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -113,12 +126,19 @@ while true; do
|
||||
# talos-2 uses a .tgz file for its "plain" update, contains other parts as well, validated against hashes under flash.sh
|
||||
# Skip prompt for hash validation for talos-2. Only method is through tgz or through bmc with individual parts
|
||||
if [ "${CONFIG_BOARD%_*}" != talos-2 ]; then
|
||||
# a rom file was provided. exit if we shall not proceed
|
||||
ROM="$PKG_FILE"
|
||||
ROM_HASH=$(sha256sum "$ROM" | awk '{print $1}') || die "Failed to hash ROM file"
|
||||
if ! (whiptail $CONFIG_ERROR_BG_COLOR --title 'Flash ROM without integrity check?' \
|
||||
--yesno "You have provided a *.$UPDATE_PLAIN_EXT file. The integrity of the file can not be\nchecked automatically for this file type.\n\nROM: $ROM\nSHA256SUM: $ROM_HASH\n\nIf you do not know how to check the file integrity yourself,\nyou should use a *.zip file instead.\n\nIf the file is damaged, you will not be able to boot anymore.\nDo you want to proceed flashing without file integrity check?" 0 80); then
|
||||
exit 1
|
||||
# Though a plain ROM isn't a package, copy it to /tmp before doing
|
||||
# anything, so we can be sure the media won't disappear or fail
|
||||
# while flashing.
|
||||
if ! cp "$PKG_FILE" "$PKG_EXTRACT/"; then
|
||||
whiptail --title 'Failed to read ROM' \
|
||||
--msgbox "Failed to read ROM:\n$PKG_FILE_DISPLAY\n\nPlease check your file (e.g. re-download).\n" 16 60
|
||||
exit 1
|
||||
fi
|
||||
ROM="$PKG_EXTRACT/$(basename "$PKG_FILE")"
|
||||
ROM_HASH=$(sha256sum "$ROM" | awk '{print $1}')
|
||||
if ! (whiptail $CONFIG_ERROR_BG_COLOR --title 'Flash ROM without integrity check?' \
|
||||
--yesno "You have provided a *.$UPDATE_PLAIN_EXT file. The integrity of the file can not be\nchecked automatically for this file type.\n\nROM: $PKG_FILE_DISPLAY\nSHA256SUM: $ROM_HASH\n\nIf you do not know how to check the file integrity yourself,\nyou should use a *.zip file instead.\n\nIf the file is damaged, you will not be able to boot anymore.\nDo you want to proceed flashing without file integrity check?" 0 80); then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
#We are on talos-2, so we have a tgz file. We will pass it directly to flash.sh which will take care of it
|
||||
@ -140,7 +160,7 @@ while true; do
|
||||
/bin/flash.sh "$ROM"
|
||||
fi
|
||||
whiptail --title 'ROM Flashed Successfully' \
|
||||
--msgbox "${PKG_FILE#"/media/"}\n\nhas been flashed successfully.\n\nPress Enter to reboot\n" 0 80
|
||||
--msgbox "$PKG_FILE_DISPLAY\n\nhas been flashed successfully.\n\nPress Enter to reboot\n" 0 80
|
||||
umount /media
|
||||
/bin/reboot
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user