Awesome
RaspberryPi2/3 UEFI
RaspberryPi UEFI is based on Linaro EDK2 release 2015.01
You can grab latest RaspberryPi GPU Firmware binaries from here: https://github.com/raspberrypi/firmware. However, the GPU Firmware binaries (bootcode.bin, kernel.img, etc..) that come as part of Windows 10 IoT Core image for RaspberryPi are the only verified and guaranteed to work version.
For information on how to bring-up Windows 10 on a new device, please refer to Windows 10 Bring-up Guide and specifically Boot and UEFI documentation as well as the UEFI to Windows Handoff Requirements section 2.3.5 in UEFI 2.6 specifications.
EDK2 Setup
Important: The RPi-UEFI
and Toolchains
folder must be in the same location for the scripts in this repo to work. For example D:\RPi-UEFI
and D:\Toolchains
or C:\projects\rpi_image\RPi-UEFI
and C:\projects\rpi_image\Toolchains
- Clone repo to your machine at D:\RPi-UEFI for example. We will refer to that path as EDK_ROOT.
git clone https://github.com/ms-iot/RPi-UEFI.git
- Switch to branch ms-iot.
git checkout ms-iot
- Install GNU ARM Embedded Toolchain 4.8 series to D:\Toolchains\Arm
Building
The output of compiling RaspberryPi2/3 UEFI is kernel.img which you put on the SDCard. If RaspberryPi can't find kernel.img on the SDCard it won't boot and it will just blink the green LED.
- From a CMD window, run
BuildPi2Pi3Board.cmd
to build UEFI
- To build a Pi2 ONLY UEFI, use BuildPi2Board.bat. Output kernel.img will be at %EDK_ROOT%\Build\Pi2Board\DEBUG_ARMGCC\kernel.img
- To build a Pi3 ONLY UEFI, use BuildPi3Board.bat. Output kernel.img will be at %EDK_ROOT%\Build\Pi3Board\DEBUG_ARMGCC\kernel.img
- To build a UEFI that boots both Pi2 and Pi3, use BuildPi2Pi3Board.bat. Output kernel.img will be at %EDK_ROOT%\Build\Pi2Pi3Board\DEBUG_ARMGCC\kernel.img
- Copy kernel.img to the SDCard boot partition (e.g EFIESP) and overwrite the existing kernel.img
By default, EDK2 is configured to build DEBUG images. To change that to RELEASE instead, go to: %EDK_ROOT%\Conf\target.txt and locate the line with TARGET = DEBUG
and change that to TARGET = RELEASE
and rebuild. The output path DEBUG_ARMGCC part will change to RELEASE_ARMGCC.
===
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.