[U-Boot] Load Debian/Fedora via EFI

Heinrich Schuchardt xypron.glpk at gmx.de
Fri Nov 29 18:23:15 UTC 2019

On 11/29/19 11:16 AM, Michal Simek wrote:
> Hi,
> I tried to boot latest debian and fedora rootfs via distro boot and
> getting errors.
> I have tried to run just one command and it is failing.
> ZynqMP> bootefi bootmgr ${fdtcontroladdr}
> BootOrder not defined
> EFI boot manager: Cannot load any image
> How to define BootOrder?
> Thanks,
> Michal

# Booting via boot manager

U-Boot currently has no runtime support for variables. But Linaro is
working on it. So update-grub cannot set the variables for you.

You can use the efidebug command to prepare for booting via the boot

=> efidebug boot add 0001 Debian mmc 0:1 \
    efi/debian/grubarm.efi console=${console}

There seems to be a bug with communication lines in U-Boot. So you
actually have to put this into a single line.

=> efidebug boot order 0001

Use saveenv if you want to save the settings.

If you do not want to use the internal device tree load the proper
device tree, e.g.

=> load mmc 0:2 $fdt_addr_r dtb

Now you are ready to boot via the boot manager:

=> bootefi bootmgr $fdt_addr_r

# Booting via distro defaults

DISTRO_DEFAULTS tries to load the devicetree from ${fdtfile} and the
UEFI binary from efi/boot/bootaa64.efi on ARM64. See

OpenBSD and FreeBSD follow the distro boot convention, Debian GRUB does not.

# Booting via boot script.

On Debian I use package flash-kernel to keep /boot/dtb in sync with the
kernel and have a u-boot.scr.uimg script with something like the
following lines:

setenv bootargs console=${console}
load mmc 2:1 ${kernel_addr_r} EFI/debian/grubarm.efi
load mmc 2:2 ${fdt_addr_r} dtb
bootefi ${kernel_addr_r} ${fdt_addr_r}

Alternatively you could use package flash-kernel and implement the
hook to start GRUB, cf.

I currently have no Fedora system in use.

Best regards


More information about the U-Boot mailing list