barebox

In embedded Linux systems, the boot loader is primarily used to initialize the
hardware to the point where the kernel can be started.

In addition, the boot loader is also an important tool for the bring-up of
new hardware: since the bootloader does not have any concurrency or interrupts,
and provides direct access to hardware, it is also popular with hardware
developers.

In modern systems, we use the freedesktop.org bootloader specification in
Barebox to find the components of a Linux system to be booted (device tree,
kernel, root file system).
Systems with a redundancy boot concept and field upgrade support use the
bootloader to determine which of the multiple images should be started.

Barebox also offers many security features, which are required for verified
boot.