mirror of
https://github.com/raspberrypi/rpi-eeprom.git
synced 2026-01-20 21:13:36 +08:00
2019-09-23 - Beta test for network boot
Fixed duplicated net-retries in bootconf.txt from 2019-09-22 and added padding back.
This commit is contained in:
BIN
firmware/beta/pieeprom-2019-09-23.bin
Normal file
BIN
firmware/beta/pieeprom-2019-09-23.bin
Normal file
Binary file not shown.
130
firmware/raspberry_pi4_network_boot_beta.md
Normal file
130
firmware/raspberry_pi4_network_boot_beta.md
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
# 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 issue
|
||||||
|
* For unknown reasons the brcmfmac wifi is not initialised in netowrk boot mode.
|
||||||
|
* Linux 5.3 kernel seems to poll SDHCI SD ever 10 seconds printing warnings to dmesg
|
||||||
|
* A timeout reading start4.elf causes start.elf to be loaded, start.elf should only be loaded if start4.elf does not exist.
|
||||||
|
|
||||||
|
## 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) must be updated to the latest rpi-update version in order to get the Pi4 network drivers.
|
||||||
|
* 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.
|
||||||
|
```
|
||||||
|
# Extract the configuration file
|
||||||
|
cp /lib/firmware/raspberrypi/beta/pieeprom-2019-09-23.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: ""
|
||||||
|
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
# Raspberry Pi4 bootloader EEPROM release notes
|
# Raspberry Pi4 bootloader EEPROM release notes
|
||||||
|
|
||||||
|
## 2019-09-23 - Git c67e8bb3 (BETA)
|
||||||
|
* Add support for network boot
|
||||||
|
* Configurable ordering for boot modes (BOOT_ORDER and SD/NET_BOOT retries)
|
||||||
|
|
||||||
## 2019-09-10 - Git f626c772
|
## 2019-09-10 - Git f626c772
|
||||||
* Configure ethernet RGMII pins at power on. This is a minor change which
|
* Configure ethernet RGMII pins at power on. This is a minor change which
|
||||||
which may improve reliability of ethernet for some users.
|
which may improve reliability of ethernet for some users.
|
||||||
|
|||||||
Reference in New Issue
Block a user