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-03-04.bin
Normal file
BIN
firmware/beta/pieeprom-2020-03-04.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,142 +0,0 @@
|
||||
# Raspberry Pi4 network boot (BETA)
|
||||
The page describes how to install and configure network boot for the Raspberry Pi4 Model B.
|
||||
|
||||
**This is an early beta test and has only been tested on a small number of networks. Check with your network administrator before enabling network boot.**
|
||||
|
||||
This documentation will be merged into the main bootloader documents after the beta test is complete.
|
||||
|
||||
## Known issues
|
||||
* Linux 5.3 kernel seems to poll SDHCI SD ever 10 seconds printing warnings to dmesg
|
||||
|
||||
## Server configuration
|
||||
Network boot requires a TFTP and NFS server to be configured. See [Network boot server tutorial](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net_tutorial.md)
|
||||
|
||||
Additional notes:-
|
||||
* The VideoCore firmware (start4.elf and fixup4.dat) must be updated to the latest rpi-update version in order to get the Pi4 network drivers.
|
||||
* The latest VideoCore firmware can be downloaded directly from the [rpi-update GitHub repo](https://github.com/Hexxeh/rpi-update)
|
||||
* The MAC address on the Pi4 is programmed at manufacture and is not derived from the serial number.
|
||||
|
||||
```
|
||||
# mac adddress (ip addr) - it should start with DC:A6:32
|
||||
ip addr | grep ether | head -n1 | awk '{print $2}' | tr [a-z] [A-Z]
|
||||
|
||||
# serial number
|
||||
vcgencmd otp_dump | grep 28: | sed s/.*://g
|
||||
```
|
||||
|
||||
## Installation - Updating firmware and bootloader
|
||||
```
|
||||
# Install the rpi-eeprom update package
|
||||
sudo apt update
|
||||
sudo apt upgrade
|
||||
sudo apt install rpi-eeprom
|
||||
|
||||
# Get the latest VideoCore firmware which includes the Pi4 network driver in start4.elf
|
||||
sudo rpi-update
|
||||
|
||||
# (Optional) Update rpi-eeprom-update to automatically get updates / bug fixes.
|
||||
sudo echo FIRMWARE_RELEASE_STATUS="beta" > /etc/default/rpi-eeprom-update
|
||||
```
|
||||
|
||||
### Configuration - Enable network boot
|
||||
Network boot is not enabled by default in the bootloader. To enable it the bootloader configuration file must be edited.
|
||||
|
||||
**NOTE:** The `/lib/firmware...` file listed in the code block below should not be copied directly, as it requires a date be maually used. There are several versions of the beta bootloader inside that directory, so make sure to select the most up-to-date version for your Raspberry Pi.
|
||||
```
|
||||
# Extract the configuration file
|
||||
cp /lib/firmware/raspberrypi/bootloader/beta/pieeprom-YYYY-MM-DD.bin pieeprom.bin
|
||||
rpi-eeprom-config pieeprom.bin > bootconf.txt
|
||||
|
||||
# Enable network boot
|
||||
# change boot_order from 0x1 (sd-boot) to
|
||||
BOOT_ORDER=0x21
|
||||
# sd-boot then failover to network boot
|
||||
|
||||
# If you have a UART cable then setting BOOT_UART=1 will help debug network boot issues
|
||||
BOOT_UART=1
|
||||
|
||||
# Apply the configuration change to the EEPROM image file
|
||||
rpi-eeprom-config --out pieeprom-netboot.bin --config bootconf.txt pieeprom.bin
|
||||
```
|
||||
|
||||
### Update the bootloader EEPROM
|
||||
```
|
||||
# Flash the bootloader EEPROM with network boot enabled
|
||||
# Run 'rpi-eeprom-update -h' for more information
|
||||
sudo rpi-eeprom-update -d -f ./pieeprom-netboot.bin
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
## TFTP prefix
|
||||
As with the Pi3 bootloader the presence of /serial_number/start.elf is used to detect
|
||||
whether the serial number should be used as the directory prefix for TFTP requests.
|
||||
|
||||
N.B. A future update might additionally check for start4.elf as well as start.elf
|
||||
in order to have a Pi4 specific TFTP root. The current assumption is that the TFTP
|
||||
root directory has copied as-is from a Raspbian Buster image file.
|
||||
|
||||
The bootloader loads start4.elf in preference to start.elf so it's possible to
|
||||
just have an empty start.elf file if you only want to have Pi4 firmware in the TFTP
|
||||
root directory.
|
||||
|
||||
## Bootloader configuration
|
||||
|
||||
### BOOT_ORDER
|
||||
The BOOT_ORDER setting allows flexible configuration for the priority of different
|
||||
bootmodes. It is represented as 32bit unsigned integer where each nibble represents
|
||||
a bootmode. The bootmodes are attempted in LSB to MSB order.
|
||||
|
||||
E.g. 0x21 means try SD first followed by network boot then stop. Where as
|
||||
0x2 would mean try network boot and then stop without trying to boot from
|
||||
the sd-card.
|
||||
|
||||
The retry counters are reset when switching to the next boot mode.
|
||||
|
||||
BOOT_ORDER fields
|
||||
* 0x0 - NONE (stop with error pattern)
|
||||
* 0x1 - SD CARD
|
||||
* 0x2 - NETWORK
|
||||
|
||||
Default: 0x00000001 (with 3 SD boot retries to match the current bootloader behaviour)
|
||||
|
||||
### SD_BOOT_MAX_RETRIES
|
||||
Specify the maximum number of times that the bootloader will retry booting from the sd-card.
|
||||
-1 means infinite retries
|
||||
Default: 0
|
||||
|
||||
### NET_BOOT_MAX_RETRIES
|
||||
Specify the maximum number of times that the bootloader will retry network boot.
|
||||
-1 means infinite retries
|
||||
Default: 0
|
||||
|
||||
### DHCP_TIMEOUT
|
||||
The timeout in milliseconds for the entire DHCP sequence before failing the current iteration.
|
||||
Default: 45000
|
||||
Minimum: 5000
|
||||
|
||||
### DHCP_REQ_TIMEOUT
|
||||
The timeout in milliseconds before retrying DHCP DISCOVER or DHCP REQ.
|
||||
Default: 4000
|
||||
Minimum: 500
|
||||
|
||||
### TFTP_TIMEOUT
|
||||
The timeout in milliseconds for an individual file download via TFTP.
|
||||
Default: 15000
|
||||
Minimum: 5000
|
||||
|
||||
### TFTP_IP
|
||||
Optional dotted decimal ip address (e.g. 192.169.1.99) for the TFTP server which overrides the server-ip from the DHCP request.
|
||||
This maybe useful on home networks because tftpd-hpa can be used instead of dnsmasq where broadband router is the DHCP server.
|
||||
Default: ""
|
||||
|
||||
### TFTP_PREFIX (since 2019-10-08)
|
||||
Configure the TFTP prefix string to probe
|
||||
* 0 - The serial number
|
||||
* 1 - The value of TFTP_PREFIX_STR
|
||||
* 2 - The mac-address separated by dashes (lower case)
|
||||
Default: 0
|
||||
|
||||
### TFTP_PREFIX_STR (since 2019-10-08)
|
||||
The prefix string to use with TFTP_PREFIX=1 - up to 127 characters.
|
||||
Default: ""
|
||||
|
||||
@@ -1,5 +1,32 @@
|
||||
# Raspberry Pi4 bootloader EEPROM release notes
|
||||
|
||||
## 2020-03-11 Add 2020-03-04 beta firmware recovery
|
||||
* Support static IP address configuration. The following fields may be
|
||||
set manually using dotted decimal address. If set, then DHCP if skipped.
|
||||
* CLIENT_IP
|
||||
* SUBNET
|
||||
* GATEWAY
|
||||
* TFTP_IP
|
||||
* If a fatal bootloader occurs then a HDMI diagnostics screen is displayed
|
||||
at VGA/DVI resolution on both monitors for two minutes. This may be
|
||||
disabled by setting DISABLE_HDMI=1 in the EEPROM configuration OR
|
||||
setting display_splash=1 in config.txt.
|
||||
* Allow the PXE menu option to match a custom string specified by
|
||||
PXE_OPTION43. The default is still "Raspberry Pi Boot"
|
||||
* DHCP_OPTION97 - The default GUID has now changed to
|
||||
RPI4+BOARD_ID+ETH_MAC_LSB+SERIAL in order to make it easier to
|
||||
automatically identify Raspberry Pi computers. The old behaviour
|
||||
is enabled by setting DHCP_OPTION97=0 which simply repeats the serial
|
||||
number 4 times.
|
||||
* SELF_UPDATE. If SELF_UPDATE is set to 1 in the EEPROM configration AND
|
||||
config.txt contains bootloader_update=1 then the bootloader will looking
|
||||
for pieeprom.upd and vl805.bin and apply these firmware files if
|
||||
they are different to current image before doing a watchdog reset.
|
||||
This should make it easier to update the bootloader for network
|
||||
booted setups because an sd-card is not required for recovery.bin.
|
||||
As usual, TFTP should only be used on private networks because the
|
||||
protocol is not secure against spoofing.
|
||||
|
||||
## 2020-02-27 rpi-eeprom-update & firmware
|
||||
* Remove the dependency check for the vl805 utility. This is deprecated
|
||||
and there is no 64-bit version. The file is still available in Github
|
||||
|
||||
@@ -10,7 +10,19 @@ if [ -f /etc/default/rpi-eeprom-update ]; then
|
||||
. /etc/default/rpi-eeprom-update
|
||||
fi
|
||||
|
||||
FIRMWARE_ROOT=${FIRMWARE_ROOT:-/lib/firmware/raspberrypi/bootloader}
|
||||
LOCAL_MODE=0
|
||||
if [ -n "$FIRMWARE_ROOT" ]; then
|
||||
# Provided by environment
|
||||
true
|
||||
elif [ -d /lib/firmware/raspberrypi/bootloader ]; then
|
||||
# Default firmware root exists
|
||||
FIRMWARE_ROOT=/lib/firmware/raspberrypi/bootloader
|
||||
else
|
||||
# Work from local git checkout
|
||||
LOCAL_MODE=1
|
||||
FIRMWARE_ROOT="${script_dir}/firmware"
|
||||
fi
|
||||
|
||||
# May be used to select beta or stable releases instead of the default critical updates.
|
||||
FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-critical}
|
||||
FIRMWARE_IMAGE_DIR=${FIRMWARE_IMAGE_DIR:-${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}}
|
||||
@@ -394,6 +406,7 @@ printVersions()
|
||||
|
||||
echo "CURRENT: $(date -u "-d@${BOOTLOADER_CURRENT_VERSION}") (${BOOTLOADER_CURRENT_VERSION})"
|
||||
echo " LATEST: $(date -u "-d@${BOOTLOADER_UPDATE_VERSION}") (${BOOTLOADER_UPDATE_VERSION})"
|
||||
echo " FW DIR: ${FIRMWARE_IMAGE_DIR}"
|
||||
|
||||
if [ "${ACTION_UPDATE_VL805}" = 1 ]; then
|
||||
echo "VL805: update required"
|
||||
@@ -597,7 +610,7 @@ AUTO_UPDATE_BOOTLOADER=0
|
||||
AUTO_UPDATE_VL805=0
|
||||
MACHINE_OUTPUT=""
|
||||
JSON_OUTPUT="no"
|
||||
IGNORE_DPKG_CHECKSUMS=0
|
||||
IGNORE_DPKG_CHECKSUMS=$LOCAL_MODE
|
||||
|
||||
while getopts A:adhif:m:ju:r option; do
|
||||
case "${option}" in
|
||||
|
||||
Reference in New Issue
Block a user