Standard Boot

What is Standard Boot?

Standard Boot is U-Boot’s built-in framework for automatically discovering and booting an operating system without relying on board-specific scripts. It uses three abstractions:

  • bootdev: Represents devices like MMC or Ethernet.

  • bootmeth: Describes the method to locate and start an OS (e.g., EFI, Script, Distro Boot).

  • bootflow: A self-contained description that tells U-Boot how to boot.

For Linux, modern distributions ship bootflows so that U-Boot can automatically detect and boot them, supporting multiple device classes (e.g., uSD, eMMC, Ethernet) and modern boot standards like EFI.

See also Standard Boot Overview.

What is Ampliphy?

Ampliphy is PHYTEC’s integration and verification distribution based on Poky. It is used to build images for our development kits and hardware. Ampliphy also acts as a staging area for upstream contributions and customer-specific projects.

Standard Boot in Ampliphy

Ampliphy configures U-Boot Standard Boot out of the box. All necessary environment variables are pre-set, so no additional user setup is needed. Notable environment settings:

  • boot_targets: Defines the list and order of devices U-Boot will attempt to boot from.

  • Other variables used by Standard Boot methods (bootmeth).

See also U-Boot environment variables for Standard Boot.

Boot Priority and Multiple Devices

If multiple bootable devices are available, U-Boot follows the order defined in boot_targets.

Example: If boot_targets is set to mmc1 mmc0 dhcp:

  • U-Boot will first try mmc1 (e.g., uSD card).

  • If unavailable or invalid, it proceeds to mmc0 (eMMC).

  • If still no boot, it attempts network boot via dhcp.

Note

If boot_targets has its default value, U-Boot promotes the currently used device to the front of the list to favor it If boot_targets has been manually customized, this dynamic adjustment is skipped.

More about boot_targets.

Boot Method Priority

Besides choosing the boot device, U-Boot also decides how to boot from a device, based on the list in bootmeths.

In our U-Boot, bootmeths is set to:

bootmeths=script efi extlinux pxe

This means:

  • U-Boot first attempts to find and run a boot script (e.g., boot.scr.uimg).

  • If no boot script is available, U-Boot tries to boot via EFI (e.g., bootaa64.efi from an EFI system partition).

  • If EFI boot fails, U-Boot tries to find an extlinux.conf for booting via extlinux method.

  • Finally, if no local methods succeed, it attempts network boot via PXE.

Tip

This flexible fallback sequence ensures that Ampliphy images are compatible with both traditional script-based boots and modern EFI-based distributions without needing manual reconfiguration.

More about bootmeths.

Supported Boot Devices

On K3-based platforms supported by Ampliphy, the following boot devices are available with standard boot:

  • uSD card

  • eMMC

  • SPI Flash

  • Ethernet (network boot)

See the ampliphy-boot recipe for details.

Details:

  • On uSD and eMMC, a boot.scr.uimg boot script is installed automatically into the boot partition via IMAGE_BOOT_FILES.

  • For network or SPI Flash boots, scripts are placed into the deploy directory during the BSP build process. Consult the following guides for more instructions on how to proceed with SPI and Network boot scripts, See Flashing the SPI NOR Flash and Network.

To enable EFI-based booting instead of boot scripts, ensure the efi MACHINE_FEATURE is enabled in your build configuration. On our K3 platforms efi MACHINE_FEATURE is enabled per default.

Legacy Boot Script Fallback

Older Ampliphy releases or images missing bootflows rely on U-Boot’s legacy boot scripts. When no bootflow is found, U-Boot falls back to its default environment scripts, executing the board’s legacy boot sequence.