RAUC Bootmeth

This bootmeth provides a way to locate and run an A/B system with RAUC as its update client. The booted distro must supply a script on an MMC device containing the final boot instructions necessary.

This bootmeth assumes a symmetric A/B partition layout, with a separate boot partition containing the kernel image and another partition for the root filesystem each. The partition numbers must be specified with CONFIG_BOOTMETH_RAUC_PARTITIONS. The content must be a list of pairs, with the following syntax: 1,2 3,4, where 1 and 3 are the slots’ boot partition and 2 and 4 the slots’ root partition.

Each pair of boot and rootfs partition form a "slot". The default order in which available slots are tried is set through CONFIG_BOOTMETH_RAUC_BOOT_ORDER, with the left one tried first.

The default number of boot tries of each slot is set by CONFIG_BOOTMETH_RAUC_DEFAULT_TRIES.

If BOOT_ORDER does not exist in environment, it will be created and set to CONFIG_BOOTMETH_RAUC_BOOT_ORDER. If any BOOT_x_LEFT (for example BOOT_A_LEFT and/or BOOT_B_LEFT) does not exist in environment, it will be created and set to CONFIG_BOOTMETH_RAUC_DEFAULT_TRIES.

If CONFIG_BOOTMETH_RAUC_RESET_ALL_ZERO_TRIES is enabled, and no valid slot is found (all slots in BOOT_ORDER have BOOT_x_LEFT set to 0), all slot tries are reset to their default values. This prevents a system from locking up in the bootloader and tries booting again after a specified number of tries.

If a valid slot is found, its LEFT value in environment is decremented by 1.

The boot script must be located in each boot partition. The bootmeth searches for boot.scr first, then boot.scr.uimg if not found. It will search in all directories of the bootstd list of prefixes ("/", "/boot" by default).

When the bootflow is booted, the bootmeth sets these environment variables:

devtype

device type (e.g. "mmc")

devnum

device number, corresponding to the device ‘sequence’ number dev_seq(dev)

distro_bootpart

partition number of the boot partition on the device (numbered from 1)

distro_rootpart

partition number of the rootfs partition on the device (numbered from 1)

raucargs

kernel command line arguments needed for RAUC to detect the currently booted slot

The script file must be a FIT or a legacy uImage. It is loaded into memory and executed.

The compatible string "u-boot,distro-rauc" is used for the driver. It is present if CONFIG_BOOTMETH_RAUC is enabled.