Files
u-boot-krane/doc/android/ab.rst
T
Marek VasutandHeinrich Schuchardt d1b0138f02 doc: Switch from printenv to env print
The "env" command is the recommended environment management command,
its "print" subcommand is the equivalent replacement for legacy "printenv"
command. Update the documentation to use the contemporary "env print"
command instead of legacy "printenv" command.

Note that the "printenv" command is unlikely to be removed from U-Boot
in the near future due to it being integral part of the command line
ABI.

Implemented using:
$ sed -i 's@\<printenv\>@env print@g' $(git grep -li '\<printenv\>' doc/) README

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2026-07-27 18:50:28 +02:00

79 lines
2.3 KiB
ReStructuredText

.. SPDX-License-Identifier: GPL-2.0+
Android A/B updates
===================
Overview
--------
A/B system updates ensures modern approach for system update. This feature
allows one to use two sets (or more) of partitions referred to as slots
(normally slot A and slot B). The system runs from the current slot while the
partitions in the unused slot can be updated [1]_.
A/B enablement
--------------
The A/B updates support can be activated by specifying next options in
your board configuration file::
CONFIG_ANDROID_AB=y
CONFIG_CMD_BCB=y
The disk space on target device must be partitioned in a way so that each
partition which needs to be updated has two or more instances. The name of
each instance must be formed by adding suffixes: ``_a``, ``_b``, ``_c``, etc.
For example: ``boot_a``, ``boot_b``, ``system_a``, ``system_b``, ``vendor_a``,
``vendor_b``.
As a result you can use ``bcb ab_select`` command to ensure A/B boot process in
your boot script. This command analyzes and processes A/B metadata stored on a
special partition (e.g. ``misc``) and determines which slot should be used for
booting up.
If the A/B metadata partition has a backup bootloader_message block that is used
to ensure one is always valid even in the event of interruption when writing, it
can be enabled in your board configuration file::
CONFIG_ANDROID_AB_BACKUP_OFFSET=0x1000
Command usage
-------------
.. code-block:: none
bcb ab_select <slot_var_name> <interface> <dev[:part_number|#part_name]>
for example::
=> bcb ab_select slot_name mmc 1:4
or::
=> bcb ab_select slot_name mmc 1#misc
Result::
=> env print slot_name
slot_name=a
Based on this slot information, the current boot partition should be defined,
and next kernel command line parameters should be generated:
* ``androidboot.slot_suffix=``
* ``root=``
For example::
androidboot.slot_suffix=_a root=/dev/mmcblk1p12
A/B metadata is organized according to AOSP reference [2]_. On the first system
start with A/B enabled, when ``misc`` partition doesn't contain required data,
the default A/B metadata will be created and written to ``misc`` partition.
References
----------
.. [1] https://source.android.com/devices/tech/ota/ab
.. [2] https://android.googlesource.com/platform/bootable/recovery/+/refs/tags/android-10.0.0_r25/bootloader_message/include/bootloader_message/bootloader_message.h