https://github.com/ipxe/pipxe
iPXE for the Raspberry Pi
https://github.com/ipxe/pipxe
ipxe pxe raspberry-pi raspberrypi uefi
Last synced: 8 months ago
JSON representation
iPXE for the Raspberry Pi
- Host: GitHub
- URL: https://github.com/ipxe/pipxe
- Owner: ipxe
- Created: 2019-10-30T16:36:27.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-02-27T01:49:04.000Z (almost 2 years ago)
- Last Synced: 2025-03-24T11:45:49.137Z (9 months ago)
- Topics: ipxe, pxe, raspberry-pi, raspberrypi, uefi
- Language: Makefile
- Homepage: http://ipxe.org
- Size: 43.9 KB
- Stars: 198
- Watchers: 15
- Forks: 39
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
piPXE - iPXE for the Raspberry Pi
=================================
[](https://github.com/ipxe/pipxe/actions?query=workflow%3ABuild+branch%3Amaster)
[](https://github.com/ipxe/pipxe/releases/latest)
piPXE is a build of the [iPXE] network boot firmware for the
[Raspberry Pi].
Quick start
-----------
1. Download [sdcard.img] and write it onto any blank micro SD card
using a tool such as `dd` or [Etcher].
2. Insert the micro SD card into your Raspberry Pi.
3. Power on your Raspberry Pi.
Within a few seconds you should see iPXE appear and begin booting from
the network:

Building from source
--------------------
To build from source, clone this repository and run `make`. This will
build all of the required components and eventually generate the SD
card image [sdcard.img].
You will need various build tools installed, including a
cross-compiling version of `gcc` for building AArch64 binaries.
Fedora build tools:
sudo dnf install -y binutils gcc gcc-aarch64-linux-gnu \
git-core iasl libuuid-devel make \
mtools perl python subversion xz-devel
Ubuntu build tools:
sudo apt install -y build-essential gcc-aarch64-linux-gnu \
git iasl lzma-dev mtools perl python \
subversion uuid-dev
How it works
------------
The SD card image contains:
* Broadcom [VC4 boot firmware]: `bootcode.bin` and related files
* [TianoCore EDK2] UEFI firmware built for the [RPi3] platform: `RPI_EFI.fd`
* [iPXE] built for the `arm64-efi` platform: `/efi/boot/bootaa64.efi`
The Raspberry Pi has a somewhat convoluted boot process in which the
VC4 GPU is responsible for loading the initial executable ARM CPU
code. The flow of execution is approximately:
1. The GPU code in the onboard boot ROM loads `bootcode.bin` from the SD card.
2. The GPU executes `bootcode.bin` and loads `RPI_EFI.fd` from the SD card.
3. The GPU allows the CPU to start executing `RPI_EFI.fd`.
4. The CPU executes `RPI_EFI.fd` and loads `bootaa64.efi` from the SD card.
5. The CPU executes `bootaa64.efi` (i.e. iPXE) to boot from the network.
Licence
-------
Every component is under an open source licence. See the individual
subproject licensing terms for more details:
*
*
*
[iPXE]: https://ipxe.org
[Raspberry Pi]: https://www.raspberrypi.org
[sdcard.img]: https://github.com/ipxe/pipxe/releases/latest/download/sdcard.img
[Etcher]: https://www.balena.io/etcher
[VC4 boot firmware]: https://github.com/raspberrypi/firmware/tree/master/boot
[TianoCore EDK2]: https://github.com/tianocore/edk2
[RPi3]: https://github.com/tianocore/edk2-platforms/tree/master/Platform/RaspberryPi/RPi3