piPXE is a build of the iPXE network boot firmware for the Raspberry Pi.
-
Download sdcard.img and write it onto any blank micro SD card using a tool such as
ddor Etcher. -
Insert the micro SD card into your Raspberry Pi.
-
Power on your Raspberry Pi.
Within a few seconds you should see iPXE appear and begin booting from the network:
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
The SD card image contains:
- Broadcom VC4 boot firmware:
bootcode.binand related files - TianoCore EDK2 UEFI firmware built for the RPi3 platform:
RPI_EFI.fd - iPXE built for the
arm64-efiplatform:/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:
- The GPU code in the onboard boot ROM loads
bootcode.binfrom the SD card. - The GPU executes
bootcode.binand loadsRPI_EFI.fdfrom the SD card. - The GPU allows the CPU to start executing
RPI_EFI.fd. - The CPU executes
RPI_EFI.fdand loadsbootaa64.efifrom the SD card. - The CPU executes
bootaa64.efi(i.e. iPXE) to boot from the network.
Every component is under an open source licence. See the individual subproject licensing terms for more details: