mirror of
https://github.com/raspberrypi/rpi-eeprom.git
synced 2026-01-20 21:13:36 +08:00
Merge branch 'master' into debian/buster
This commit is contained in:
BIN
firmware/beta/pieeprom-2020-10-02.bin
Normal file
BIN
firmware/beta/pieeprom-2020-10-02.bin
Normal file
Binary file not shown.
BIN
firmware/beta/pieeprom-2020-10-28.bin
Normal file
BIN
firmware/beta/pieeprom-2020-10-28.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -3,6 +3,52 @@
|
||||
USB MSD boot also requires the firmware from Raspberry Pi OS 2020-08-20 or newer.
|
||||
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md
|
||||
|
||||
## 2020-10-28 Defer HDMI diagnostics display, update-timestamps, tryboot support
|
||||
* Skip rendering of the diagnostics screen for HDMI_DELAY seconds (default 5).
|
||||
This means that for SD-card and USB MSD flash boot devices the diagnostics
|
||||
screen will not be visible.
|
||||
* On Pi 4B 1.4 (8GB) initialise SDRAM whilst waiting for the USB port power
|
||||
off time. This makes booting slightly faster.
|
||||
* Remove HDMI console messages where the information is duplicated elsewhere
|
||||
on the display.
|
||||
* Improve compatiblity with external USB 3.0 disk enclosures by enumerating
|
||||
the downstream hubs before executing the USB port power off.
|
||||
N.B. Pi4 8GB automatically powers off the USB ports during chip-reset and
|
||||
does not need this change.
|
||||
* Don't timeout a USB MSD device after USB_MSD_LUN_TIMEOUT if there are no other
|
||||
MSD devices or LUNs to tries. This avoids unecessary timeouts on very slow
|
||||
to initialise disk drives e.g. USB HDDs designed for backups.
|
||||
* Fix failover to partition zero if the partition number is invalid. For USB
|
||||
MSD boot a start.elf update is also required.
|
||||
* SD-Card - Change default retries from 0 to 1 to improve reliability with
|
||||
some old SD v1 cards.
|
||||
* Fix issue where boot would stop if partition type 0x83 was encountered
|
||||
before the first FAT partition.
|
||||
* SELF_UPDATE mode (Network, USB MSD boot) now reads the timestamp information
|
||||
in pieeprom.sig created by rpi-eeprom-update to see if the updated is
|
||||
newer than the current 'update-timestamp'. If not, the update is skipped
|
||||
to avoid stale updates on network or USB disks being installed by accident.
|
||||
|
||||
recovery.bin updates (from the SD card) do not check the timestamp because
|
||||
recovery.bin renames itself once the update is completed. However, it still
|
||||
writes the update-timestamp to the EEPROM.
|
||||
|
||||
The update-timestamp is the timestamp when the update is created is
|
||||
independent of the build-timestamp for the bootloader executable. See
|
||||
rpi-eeprom-udpate -h
|
||||
* Add support for the 'tryboot' feature that enables operating systems to
|
||||
implement a fallback mechanism if an OS upgrade fails. This works with all
|
||||
bootable media types but requires updated firmware and OS software.
|
||||
|
||||
This feature should be viewed as EXPERIMENTAL and may change depenending upon
|
||||
feedback from other OS/distro maintainer.
|
||||
https://github.com/raspberrypi/linux/commit/757666748ebf69dc161a262faa3717a14d68e5aa
|
||||
|
||||
|
||||
## 2020-10-02 Include CM4 manufacturing bootloader image.
|
||||
* Include the release image for reference. This contains some minor changes
|
||||
to support manufacture test.
|
||||
|
||||
## 2020-09-14 Promote the 2020-09-03 release to be the default EEPROM images.
|
||||
* Promote the 2020-09-03 bootloader EEPROM and VLI 0138A1 as the default
|
||||
release (critical folder).
|
||||
|
||||
@@ -22,6 +22,9 @@ MAX_BOOTCONF_SIZE = 2024
|
||||
# The number, order and size of the sections depends on the bootloader version
|
||||
# but the following mask can be used to test for section headers and skip
|
||||
# unknown data.
|
||||
#
|
||||
# The last 4KB of the EEPROM image is reserved for internal use by the
|
||||
# bootloader and may be overwritten during the update process.
|
||||
MAGIC = 0x55aaf00f
|
||||
MAGIC_MASK = 0xfffff00f
|
||||
FILE_MAGIC = 0x55aaf11f # id for modifiable file, currently only bootconf.txt
|
||||
|
||||
@@ -104,7 +104,7 @@ die() {
|
||||
|
||||
prepareImage()
|
||||
{
|
||||
[ -f "${BOOTLOADER_UPDATE_IMAGE}" ] || die "EEPROM image \'${BOOTLOADER_UPDATE_IMAGE}\' not found"
|
||||
[ -f "${BOOTLOADER_UPDATE_IMAGE}" ] || die "EEPROM image '${BOOTLOADER_UPDATE_IMAGE}' not found"
|
||||
TMP_EEPROM_IMAGE="$(mktemp)"
|
||||
TMP_EEPROM_CONFIG="$(mktemp)"
|
||||
NEW_EEPROM_CONFIG="$(mktemp)"
|
||||
@@ -150,10 +150,16 @@ applyRecoveryUpdate()
|
||||
echo "BOOTFS ${BOOTFS}"
|
||||
|
||||
# A '.sig' file is created so that recovery.bin can check that the
|
||||
# EEPROM image has not been created (e.g. SD card corruption).
|
||||
# The .sig file format is currently just a SHA256 in ASCII hex. In future,
|
||||
# if an actual public key signature is required then that plus any other
|
||||
# data would be appended after the SHA256 signature.
|
||||
# EEPROM image has not been corrupted (e.g. SD card corruption).
|
||||
# Format of the .sig file.
|
||||
# --
|
||||
# SHA256\n
|
||||
# ts: UPDATE-TIMESTAMP\n
|
||||
# --
|
||||
# SHA256 is a 64 character hex string
|
||||
# UPDATE-TIMESTAMP is an unsigned decimal.
|
||||
#
|
||||
# The 'filename' output from sha256 MUST be omitted.
|
||||
if [ -n "${BOOTLOADER_UPDATE_IMAGE}" ]; then
|
||||
[ -f "${BOOTLOADER_UPDATE_IMAGE}" ] || die "${BOOTLOADER_UPDATE_IMAGE} not found"
|
||||
|
||||
@@ -167,6 +173,15 @@ applyRecoveryUpdate()
|
||||
sha256sum "${TMP_EEPROM_IMAGE}" | awk '{print $1}' > "${BOOTFS}/pieeprom.sig" \
|
||||
|| die "Failed to create ${BOOTFS}/pieeprom.sig"
|
||||
|
||||
# Appends the update creation timestamp on a newline in pieeprom.sig
|
||||
# During a self-update mode the bootloader examines the update-timestamp
|
||||
# and will only update itself if it is newer than the current update
|
||||
# timestamp.
|
||||
#
|
||||
# The update-timestamp is independent of the bootloader version and
|
||||
# does not have to be timestamp.
|
||||
echo "ts: $(date -u +%s)" >> "${BOOTFS}/pieeprom.sig"
|
||||
|
||||
cp -f "${TMP_EEPROM_IMAGE}" "${BOOTFS}/pieeprom.upd" \
|
||||
|| die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}"
|
||||
|
||||
@@ -180,7 +195,7 @@ applyRecoveryUpdate()
|
||||
|| die "Failed to create ${BOOTFS}/vl805.sig"
|
||||
|
||||
cp -f "${VL805_UPDATE_IMAGE}" "${BOOTFS}/vl805.bin" \
|
||||
|| die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS/vl805.bin}"
|
||||
|| die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin"
|
||||
|
||||
# For NFS mounts ensure that the files are readable to the TFTP user
|
||||
chmod -f go+r "${BOOTFS}/vl805.bin" "${BOOTFS}/vl805.sig" \
|
||||
@@ -196,16 +211,15 @@ applyUpdate() {
|
||||
|
||||
if [ "${IGNORE_DPKG_CHECKSUMS}" = 0 ]; then
|
||||
(
|
||||
package_info_dir="/var/lib/dpkg/info/"
|
||||
package_checksums_file="${package_info_dir}/rpi-eeprom.md5sums"
|
||||
package_checksums_file="${PACKAGE_INFO_DIR}/rpi-eeprom.md5sums"
|
||||
|
||||
if ! grep -qE '\.bin$' "${package_info_dir}/rpi-eeprom.md5sums"; then
|
||||
if ! grep -qE '\.bin$' "${PACKAGE_INFO_DIR}/rpi-eeprom.md5sums"; then
|
||||
# Try the old rpi-eeprom-images package
|
||||
package_checksums_file="${package_info_dir}/rpi-eeprom-images.md5sums"
|
||||
package_checksums_file="${PACKAGE_INFO_DIR}/rpi-eeprom-images.md5sums"
|
||||
fi
|
||||
|
||||
CHECKSUMS=$(mktemp)
|
||||
cat "${package_checksums_file}" | grep -E '\.bin$' > "${CHECKSUMS}"
|
||||
grep -E '\.bin$' "${package_checksums_file}" > "${CHECKSUMS}"
|
||||
cd /
|
||||
if ! md5sum -c "${CHECKSUMS}" > /dev/null 2>&1; then
|
||||
md5sum -c "${CHECKSUMS}"
|
||||
@@ -304,7 +318,7 @@ checkDependencies() {
|
||||
BOARD_TYPE=$(((0x$BOARD_INFO >> 4) & 0xff))
|
||||
BOARD_REVISION=$((0x$BOARD_INFO & 0xf))
|
||||
|
||||
if [ ${BOARD_TYPE} -eq 20 ] && [ ${CM4_ENABLE_RPI_EEPROM_UPDATE} != '1' ]; then
|
||||
if [ ${BOARD_TYPE} -eq 20 ] && [ "${CM4_ENABLE_RPI_EEPROM_UPDATE}" != '1' ]; then
|
||||
# For CM4, USB device boot is the recommended method for EEPROM updates.
|
||||
echo "rpi-eeprom-update is not enabled by default on CM4"
|
||||
exit ${EXIT_SUCCESS}
|
||||
@@ -706,7 +720,12 @@ AUTO_UPDATE_BOOTLOADER=0
|
||||
AUTO_UPDATE_VL805=0
|
||||
MACHINE_OUTPUT=""
|
||||
JSON_OUTPUT="no"
|
||||
IGNORE_DPKG_CHECKSUMS=$LOCAL_MODE
|
||||
IGNORE_DPKG_CHECKSUMS=${LOCAL_MODE}
|
||||
PACKAGE_INFO_DIR="/var/lib/dpkg/info/"
|
||||
if [ ! -d "${PACKAGE_INFO_DIR}" ]; then
|
||||
IGNORE_DPKG_CHECKSUMS=1
|
||||
fi
|
||||
|
||||
|
||||
while getopts A:abdhilf:m:ju:r option; do
|
||||
case "${option}" in
|
||||
@@ -722,9 +741,9 @@ while getopts A:abdhilf:m:ju:r option; do
|
||||
a) AUTO_UPDATE_BOOTLOADER=1
|
||||
AUTO_UPDATE_VL805=1
|
||||
;;
|
||||
b)
|
||||
findBootFS
|
||||
echo ${BOOTFS}
|
||||
b)
|
||||
findBootFS
|
||||
echo "${BOOTFS}"
|
||||
exit 0
|
||||
;;
|
||||
d) OVERWRITE_CONFIG=1
|
||||
|
||||
Reference in New Issue
Block a user