/pipxe

iPXE for the Raspberry Pi

Primary LanguageMakefile

piPXE - iPXE for the Raspberry Pi

Build Release

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:

Screenshot

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:

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: