Merge pull request #10 from andrum99/patch-1

rpi-eeprom-update: minor fixes to usage, rename version check function
This commit is contained in:
timg
2019-09-11 10:42:24 +01:00
committed by GitHub

View File

@@ -167,16 +167,16 @@ getCurrentVersion() {
fi fi
} }
# Set to the latest critical firmware version # Find latest applicable update version
CRITICAL_UPDATE_IMAGE="" UPDATE_IMAGE=""
CRITICAL_UPDATE_VERSION=0 UPDATE_VERSION=0
getLatestCriticalUpdate() { getUpdateVersion() {
CRITICAL_UPDATE_VERSION=0 UPDATE_VERSION=0
match=".*/pieeprom-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].bin" match=".*/pieeprom-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].bin"
latest="$(find "${FIRMWARE_IMAGE_DIR}" -maxdepth 1 -type f -size "${EEPROM_SIZE}c" -regex "${match}" | sort -r | head -n1)" latest="$(find "${FIRMWARE_IMAGE_DIR}" -maxdepth 1 -type f -size "${EEPROM_SIZE}c" -regex "${match}" | sort -r | head -n1)"
if [ -f "${latest}" ]; then if [ -f "${latest}" ]; then
CRITICAL_UPDATE_VERSION=$(strings "${latest}" | grep BUILD_TIMESTAMP | sed 's/.*=//g') UPDATE_VERSION=$(strings "${latest}" | grep BUILD_TIMESTAMP | sed 's/.*=//g')
CRITICAL_UPDATE_IMAGE="${latest}" UPDATE_IMAGE="${latest}"
fi fi
} }
@@ -189,11 +189,11 @@ checkDependencies() {
fi fi
if [ ! -d "${FIRMWARE_IMAGE_DIR}" ]; then if [ ! -d "${FIRMWARE_IMAGE_DIR}" ]; then
die "Bootloader critical updates directory ${FIRMWARE_IMAGE_DIR} not found." die "Bootloader updates directory ${FIRMWARE_IMAGE_DIR} not found."
fi fi
if vcgencmd bootloader_config | grep -qi "Command not registered"; then if vcgencmd bootloader_config | grep -qi "Command not registered"; then
die "vcgencmd: bootloader_config. not supported. Please update VC firmware" die "vcgencmd: 'bootloader_config' command not supported. Please update VC firmware"
fi fi
if ! flashrom --version > /dev/null 2>&1; then if ! flashrom --version > /dev/null 2>&1; then
@@ -201,14 +201,14 @@ checkDependencies() {
fi fi
if [ "${USE_FLASHROM}" = 0 ]; then if [ "${USE_FLASHROM}" = 0 ]; then
[ -f "${RECOVERY_BIN}" ] || die "${RECOVERY_BIN} not found" [ -f "${RECOVERY_BIN}" ] || die "${RECOVERY_BIN} not found."
fi fi
} }
usage() { usage() {
cat <<EOF cat <<EOF
rpi-eeprom-update [options]... [FILE] rpi-eeprom-update [options]... [FILE]
Checks whether there Raspberry Pi bootloader EEPROM is up to date and Checks whether the Raspberry Pi bootloader EEPROM is up-to-date and
optionally updates the EEPROM at the next reboot. optionally updates the EEPROM at the next reboot.
The default update mechanism writes recovery.bin and pieeprom.upd to the The default update mechanism writes recovery.bin and pieeprom.upd to the
@@ -230,9 +230,9 @@ rpi-eeprom-update [options]... [FILE]
A backup of the current EEPROM config file is written to ${FIRMWARE_BACKUP_DIR} A backup of the current EEPROM config file is written to ${FIRMWARE_BACKUP_DIR}
before applying the update. before applying the update.
-a Install the latest critical update if necessary. -a Install the latest update if necessary
-d Use the default bootloader config instead of migrating the current settings. -d Use the default bootloader config instead of migrating the current settings
-f Install the given file instead of the latest critical update. -f Install the given file instead of the latest applicable update
Ignores the FREEZE_VERSION flag in bootloader and is intended for manual Ignores the FREEZE_VERSION flag in bootloader and is intended for manual
firmware updates. firmware updates.
WARNING: This command should only be run from console mode in order to WARNING: This command should only be run from console mode in order to
@@ -241,19 +241,20 @@ rpi-eeprom-update [options]... [FILE]
-j Write status information using JSON notation -j Write status information using JSON notation
-m Write status information to the given file when run without -a or -f -m Write status information to the given file when run without -a or -f
To extract the configuration file from an EEPROM image.
To extract the configuration file from an EEPROM image:
rpi-eeprom-config pieeprom.bin --out bootconf.txt rpi-eeprom-config pieeprom.bin --out bootconf.txt
To update the configuration file in an EEPROM image. To update the configuration file in an EEPROM image:
rpi-eeprom-config pieeprom.bin --config bootconf.txt --out pieeprom-new.bin rpi-eeprom-config pieeprom.bin --config bootconf.txt --out pieeprom-new.bin
To flash the new image To flash the new image:
sudo rpi-eeprom-update -d -f ./pieeprom-new.bin sudo rpi-eeprom-update -d -f ./pieeprom-new.bin
The syntax is the same as config.txt but section filters etc are not supported. See The syntax is the same as config.txt but section filters etc are not supported. See
online documentation for the list of paramters. online documentation for the list of parameters.
The official documentation for the Raspberry Pi bootloader EEPROM is available here:- The official documentation for the Raspberry Pi bootloader EEPROM is available at
https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
EOF EOF
@@ -292,12 +293,12 @@ findBootFS()
checkAndApply() checkAndApply()
{ {
getCurrentVersion getCurrentVersion
getLatestCriticalUpdate getUpdateVersion
if [ "${CRITICAL_UPDATE_VERSION}" -gt "${CURRENT_VERSION}" ]; then if [ "${UPDATE_VERSION}" -gt "${CURRENT_VERSION}" ]; then
printVersions "${CURRENT_VERSION}" "${CRITICAL_UPDATE_VERSION}" printVersions "${CURRENT_VERSION}" "${UPDATE_VERSION}"
echo "*** INSTALLING REQUIRED UPDATE ***" echo "*** INSTALLING REQUIRED UPDATE ***"
applyUpdate "${CRITICAL_UPDATE_IMAGE}" applyUpdate "${UPDATE_IMAGE}"
echo "Bootloader EEPROM update pending. Please reboot to apply the update." echo "Bootloader EEPROM update pending. Please reboot to apply the update."
else else
echo "Bootloader EEPROM is up to date. $(date -d@${CURRENT_VERSION})" echo "Bootloader EEPROM is up to date. $(date -d@${CURRENT_VERSION})"
@@ -330,16 +331,16 @@ removePreviousUpdates()
checkVersion() checkVersion()
{ {
getCurrentVersion getCurrentVersion
getLatestCriticalUpdate getUpdateVersion
if [ "${CRITICAL_UPDATE_VERSION}" -gt "${CURRENT_VERSION}" ]; then if [ "${UPDATE_VERSION}" -gt "${CURRENT_VERSION}" ]; then
echo "*** UPDATE REQUIRED ***" echo "*** UPDATE REQUIRED ***"
printVersions "${CURRENT_VERSION}" "${CRITICAL_UPDATE_VERSION}" printVersions "${CURRENT_VERSION}" "${UPDATE_VERSION}"
write_status_info EXIT_UPDATE_REQUIRED "${CURRENT_VERSION}" "${CRITICAL_UPDATE_VERSION}" write_status_info EXIT_UPDATE_REQUIRED "${CURRENT_VERSION}" "${UPDATE_VERSION}"
exit ${EXIT_UPDATE_REQUIRED} exit ${EXIT_UPDATE_REQUIRED}
else else
echo "Bootloader EEPROM is up to date" echo "Bootloader EEPROM is up to date"
printVersions "${CURRENT_VERSION}" "${CRITICAL_UPDATE_VERSION}" printVersions "${CURRENT_VERSION}" "${UPDATE_VERSION}"
write_status_info EXIT_SUCCESS "${CURRENT_VERSION}" "${CRITICAL_UPDATE_VERSION}" write_status_info EXIT_SUCCESS "${CURRENT_VERSION}" "${UPDATE_VERSION}"
exit ${EXIT_SUCCESS} exit ${EXIT_SUCCESS}
fi fi
} }