| .. SPDX-License-Identifier: GPL-2.0+: |
| |
| 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. |