.. SPDX-License-Identifier: GPL-2.0+:

.. index::
   single: bootmeth (command)

bootmeth command
================

Synopsis
--------

::

    bootmeth list [-a]          - list selected bootmeths (-a for all)
    bootmeth order "[<bm> ...]" - select the order of bootmeths
    bootmeth set <bootmeth> <property> <value> - set optional property


Description
-----------

The `bootmeth` command is used to manage bootmeths. It can list them and change
the order in which they are used.

See :doc:`/develop/bootstd/index` for more information.


.. _bootmeth_order:

bootmeth order
~~~~~~~~~~~~~~

Selects which bootmeths to use and the order in which they are invoked. When
scanning bootdevs, each bootmeth is tried in turn to see if it can find a valid
bootflow. You can use this command to adjust the order or even to omit some
boomeths.

The argument is a quoted list of bootmeths to use, by name. If global bootmeths
are included, they must be at the end, otherwise the scanning mechanism will not
work correctly.


bootmeth list
~~~~~~~~~~~~~

This lists the selected bootmeths, or all of them, if the `-a` flag is used.
The format looks like this:

=====  ===  ==================  =================================
Order  Seq  Name                Description
=====  ===  ==================  =================================
    0    0  extlinux            Extlinux boot from a block device
    1    1  efi                 EFI boot from an .efi file
    2    2  pxe                 PXE boot from a network device
    3    3  sandbox             Sandbox boot for testing
 glob    4  efi_mgr             EFI bootmgr flow
=====  ===  ==================  =================================

The fields are as follows:

Order:
    The order in which these bootmeths are invoked for each bootdev. If this
    shows as a hyphen, then the bootmeth is not in the current ordering. If it
    shows as 'glob', then this is a global bootmeth and should be at the end.

Seq:
    The sequence number of the bootmeth, i.e. the normal ordering if none is set

Name:
    Name of the bootmeth

Description:
    A friendly description for the bootmeth


Example
-------

This shows listing bootmeths. All are present and in the normal order::

    => bootmeth list
    Order  Seq  Name                Description
    -----  ---  ------------------  ------------------
        0    0  distro              Extlinux boot from a block device
        1    1  efi                 EFI boot from an .efi file
        2    2  pxe                 PXE boot from a network device
        3    3  sandbox             Sandbox boot for testing
        4    4  efi_mgr             EFI bootmgr flow
    -----  ---  ------------------  ------------------
    (5 bootmeths)

Now the order is changed, to include only two of them::

    => bootmeth order "sandbox distro"
    => bootmeth list
    Order  Seq  Name                Description
    -----  ---  ------------------  ------------------
        0    3  sandbox             Sandbox boot for testing
        1    0  distro              Extlinux boot from a block device
    -----  ---  ------------------  ------------------
    (2 bootmeths)

The -a flag shows all bootmeths so you can clearly see which ones are used and
which are not::

    => bootmeth list -a
    Order  Seq  Name                Description
    -----  ---  ------------------  ------------------
        1    0  distro              Extlinux boot from a block device
        -    1  efi                 EFI boot from an .efi file
        -    2  pxe                 PXE boot from a network device
        0    3  sandbox             Sandbox boot for testing
        -    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
