the boot process involves several pieces, some of them being proprietary and released as firmware/binary blob only.
From a very high level view, the boot process is:
- A53 ROM code (Primary Boot Loader) starts execution, and loads Secondary Boot Loader (SBL) from eMMC sbl1 partition
- A53 runs SBL, which initializes a bunch of ‘things’, DDR
- A53 loads the Application Bootloader (APPSBL) from the ‘aboot’ partition on the eMMC
- A53 starts execution of APPSBL
- A53 runs APPSBL whose job is to load the kernel image, and starts kernel.
Currently, the APPSBL included in both Linux and Android release is Little Kernel (https://developer.qualcomm.com/download/little-kernel-boot-loader-overview.pdf). It is open source. and it is the first open source component in the boot chain. We haven’t provided the complete instructions on how to rebuild it, but I am planning to have that documented soon.
Please note that APPSBL currently runs in 32-bit mode, and the switch to 64 bit is done when/if the kernel image to be loaded is built for aarch64.
APPSBL could be replaced by u-boot, assuming someone adds supports for it in u-boot, which isn’t the case today.
The current APPSBL expects a specific ‘boot’ image in the ‘boot’ partition on the eMMC. You can create your own boot image using https://github.com/96boards/documentation/wiki/Dragonboard-410c-Boot-Image.
There is no support for UEFI at the moment, unfortunetaly.
If you want to add distro support with the current APPSBL, it’s possible, but you have to teach the distro about the custom boot image format… it’s possible to generate the boot.img from the target and write it to the ‘boot’ partition…