| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- .. SPDX-License-Identifier: GPL-2.0+
- .. (C) Copyright 2011-2012 Pali Rohár <pali@kernel.org>
- bootmenu command
- ================
- Synopsis
- --------
- ::
- bootmenu [delay]
- Description
- -----------
- The "bootmenu" command uses U-Boot menu interfaces and provides
- a simple mechanism for creating menus with different boot items.
- The cursor keys "Up" and "Down" are used for navigation through
- the items. Current active menu item is highlighted and can be
- selected using the "Enter" key. The selection of the highlighted
- menu entry invokes an U-Boot command (or a list of commands)
- associated with this menu entry.
- The "bootmenu" command interprets ANSI escape sequences, so
- an ANSI terminal is required for proper menu rendering and item
- selection.
- The assembling of the menu is done via a set of environment variables
- "bootmenu_<num>" and "bootmenu_delay", i.e.::
- bootmenu_delay=<delay>
- bootmenu_<num>="<title>=<commands>"
- <delay>
- is the autoboot delay in seconds, after which the first
- menu entry will be selected automatically
- <num>
- is the boot menu entry number, starting from zero
- <title>
- is the text of the menu entry shown on the console
- or on the boot screen
- <commands>
- are commands which will be executed when a menu
- entry is selected
- Title and commands are separated by the first appearance of a '='
- character in the value of the environment variable.
- The first (optional) argument of the "bootmenu" command is a delay specifier
- and it overrides the delay value defined by "bootmenu_delay" environment
- variable. If the environment variable "bootmenu_delay" is not set or if
- the argument of the "bootmenu" command is not specified, the default delay
- will be CONFIG_BOOTDELAY. If delay is 0, no menu entries will be shown on
- the console (or on the screen) and the command of the first menu entry will
- be called immediately. If delay is less then 0, bootmenu will be shown and
- autoboot will be disabled.
- Bootmenu always adds menu entry "U-Boot console" at the end of all menu
- entries specified by environment variables. When selecting this entry
- the bootmenu terminates and the usual U-Boot command prompt is presented
- to the user.
- Example environment::
- setenv bootmenu_0 Boot 1. kernel=bootm 0x82000000 # Set first menu entry
- setenv bootmenu_1 Boot 2. kernel=bootm 0x83000000 # Set second menu entry
- setenv bootmenu_2 Reset board=reset # Set third menu entry
- setenv bootmenu_3 U-Boot boot order=boot # Set fourth menu entry
- bootmenu 20 # Run bootmenu with autoboot delay 20s
- The above example will be rendered as below::
- *** U-Boot Boot Menu ***
- Boot 1. kernel
- Boot 2. kernel
- Reset board
- U-Boot boot order
- U-Boot console
- Hit any key to stop autoboot: 20
- Press UP/DOWN to move, ENTER to select
- The selected menu entry will be highlighted - it will have inverted
- background and text colors.
- UEFI boot variable enumeration
- ''''''''''''''''''''''''''''''
- If enabled, the bootmenu command will automatically generate and add
- UEFI-related boot menu entries for the following items.
- * possible bootable media with default file names
- * user-defined UEFI boot options
- The bootmenu automatically enumerates the possible bootable
- media devices supporting EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.
- This auto generated entry is named as "<interface> <devnum>:<part>" format.
- (e.g. "usb 0:1")
- The bootmenu displays the UEFI-related menu entries in order of "BootOrder".
- When the user selects the UEFI boot menu entry, the bootmenu sets
- the selected boot variable index to "BootNext" without non-volatile attribute,
- then call the uefi boot manager with the command "bootefi bootmgr".
- Example bootmenu is as below::
- *** U-Boot Boot Menu ***
- mmc 0:1
- mmc 0:2
- debian
- nvme 0:1
- ubuntu
- nvme 0:2
- usb 0:2
- U-Boot console
- Default behavior when user exits from the bootmenu
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- User can exit from bootmenu by selecting the last entry
- "U-Boot console"/"Quit" or ESC key.
- When the CONFIG_BOOTMENU_DISABLE_UBOOT_CONSOLE is disabled,
- user exits from the bootmenu and returns to the U-Boot console.
- When the CONFIG_BOOTMENU_DISABLE_UBOOT_CONSOLE is enabled, user can not
- enter the U-Boot console. When the user exits from the bootmenu,
- the bootmenu invokes the following default behavior.
- * if CONFIG_CMD_BOOTEFI_BOOTMGR is enabled, execute "bootefi bootmgr" command
- * "bootefi bootmgr" fails or is not enabled, then execute "run bootcmd" command.
- Configuration
- -------------
- The "bootmenu" command is enabled by::
- CONFIG_CMD_BOOTMENU=y
- To run the bootmenu at startup add these additional settings::
- CONFIG_AUTOBOOT_KEYED=y
- CONFIG_BOOTDELAY=30
- CONFIG_AUTOBOOT_MENU_SHOW=y
- UEFI boot variable enumeration is enabled by::
- CONFIG_CMD_BOOTEFI_BOOTMGR=y
- To improve the product security, entering U-Boot console from bootmenu
- can be disabled by::
- CONFIG_BOOTMENU_DISABLE_UBOOT_CONSOLE=y
- To scan the discoverable devices connected to the buses such as
- USB and PCIe prior to bootmenu showing up, CONFIG_PREBOOT can be
- used to run the command before showing the bootmenu, i.e.::
- CONFIG_USE_PREBOOT=y
- CONFIG_PREBOOT="pci enum; usb start; scsi scan; nvme scan; virtio scan"
|