bootstd: Add command to enable setting of bootmeth specific properties

We have previously added logic to allow a "fallback" option to be
specified in the extlinux configuration. Provide a command that allows
us to set this as the preferred default option when booting.

Combined with the bootcount functionality, this allows the "altbootcmd"
to provide a means of falling back to a previously known good state
after a failed update. For example, if "bootcmd" is set to:

    bootflow scan -lb

We would set "altbootcmd" to:

    bootmeth set extlinux fallback 1; bootflow scan -lb

Causing the boot process to boot from the fallback option.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Martyn Welch <martyn.welch@collabora.com>
This commit is contained in:
Martyn Welch
2024-10-09 14:15:40 +01:00
committed by Tom Rini
parent 8ba82a91b3
commit 3809fd35a5
6 changed files with 196 additions and 6 deletions

View File

@@ -12,7 +12,8 @@ Synopsis
::
bootmeth list [-a] - list selected bootmeths (-a for all)
bootmeth order "[<bm> ...]" - select the order of bootmeths\n"
bootmeth order "[<bm> ...]" - select the order of bootmeths
bootmeth set <bootmeth> <property> <value> - set optional property
Description
@@ -112,3 +113,38 @@ which are not::
- 4 efi_mgr EFI bootmgr flow
----- --- ------------------ ------------------
(5 bootmeths)
bootmeth set
~~~~~~~~~~~~
Allows setting of bootmeth specific configuration. This allows finer grain
control over the boot process in specific instances.
Supported Configuration Options
-------------------------------
The following configuration options are currently supported:
======== =================== ====== ===============================
Property Supported Bootmeths Values Description
======== =================== ====== ===============================
fallback extlinux 0 | 1 Enable or disable fallback path
======== =================== ====== ===============================
Bootmeth set Example
--------------------
With the bootcount functionality enabled, when the bootlimit is reached, the
`altbootcmd` environment variable lists the command used for booting rather
than `bootcmd`. We can set the fallback configuration to cause the fallback
boot option to be preferred, to revert to a previous known working boot option
after a failed update for example. So if `bootcmd` is set to::
bootflow scan -lb
We would set "altbootcmd" to::
bootmeth set extlinux fallback 1; bootflow scan -lb