mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	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>
		
	
			
		
			
				
	
	
		
			151 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. 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
 |