bootdev command

Synopsis

bootdev list [-p]        - list all available bootdevs (-p to probe)
bootdev hunt [-l|<spec>] - use hunt drivers to find bootdevs
bootdev select <bm>      - select a bootdev by name
bootdev info [-p]        - show information about a bootdev

Description

The bootdev command is used to manage bootdevs. It can list available bootdevs, select one and obtain information about it.

See U-Boot Standard Boot for more information about bootdevs in general.

bootdev list

This lists available bootdevs

Scanning with -p causes the bootdevs to be probed. This happens automatically when they are used.

The list looks something like this:

Seq

Probed

Status

Uclass

Name

0

[ + ]

OK

mmc

mmc@7e202000.bootdev

1

[ ]

OK

mmc

sdhci@7e300000.bootdev

2

[ ]

OK

ethernet

smsc95xx_eth.bootdev

The fields are as follows:

Seq:

Sequence number in the scan, used to reference the bootflow later

Probed:

Shows a plus (+) if the device is probed, empty if not.

Status:

Shows the status of the device. Typically this is OK meaning that there is no error. If you use -p and an error occurs when probing, then this shows the error number. You can look up Linux error codes to find the meaning of the number.

Uclass:

Name of the media device’s Uclass. This indicates the type of the parent device (e.g. MMC, Ethernet).

Name:

Name of the bootdev. This is generated from the media device appended with .bootdev

bootdev hunt

This hunts for new bootdevs, or shows a list of hunters.

Use -l to list the available bootdev hunters.

To run hunters, specify the name of the hunter to run, e.g. “mmc”. If no name is provided, all hunters are run.

bootdev select

Use this to select a particular bootdev. You can select it by the sequence number or name, as shown in bootdev list.

Once a bootdev is selected, you can use bootdev info to look at it or bootflow scan to scan it.

If no bootdev name or number is provided, then any existing bootdev is unselected.

bootdev info

This shows information on the current bootdev, with the format looking like this:

Name

mmc@7e202000.bootdev

Sequence

0

Status

Probed

Uclass

mmc

Bootflows

1 (1 valid)

Most of the information is the same as bootdev list above. The new fields are:

Device

Name of the bootdev

Status

Shows Probed if the device is probed, OK if not. If -p is used and the device fails to probe, an error code is shown.

Bootflows

Indicates the number of bootflows attached to the bootdev. This is 0 unless you have used ‘bootflow scan’ on the bootflow, or on all bootflows.

Example

This example shows listing available bootdev and getting information about one of them:

U-Boot> bootdev list
Seq  Probed  Status  Uclass    Name
---  ------  ------  --------  ------------------
  0   [ + ]      OK  mmc       mmc@7e202000.bootdev
  1   [   ]      OK  mmc       sdhci@7e300000.bootdev
  2   [   ]      OK  ethernet  smsc95xx_eth.bootdev
---  ------  ------  --------  ------------------
(3 devices)
U-Boot> bootdev sel 0
U-Boot> bootflow scan
U-Boot> bootdev info
Name:      mmc@7e202000.bootdev
Sequence:  0
Status:    Probed
Uclass:    mmc
Bootflows: 1 (1 valid)

This shows using one of the available hunters, then listing them:

=> bootdev hunt usb
Hunting with: usb
Bus usb@1: scanning bus usb@1 for devices...
3 USB Device(s) found
=> bootdev hunt -l
Prio  Used  Uclass           Hunter
----  ----  ---------------  ---------------
6        ethernet         eth_bootdev
1        simple_bus       (none)
5        ide              ide_bootdev
2        mmc              mmc_bootdev
4        nvme             nvme_bootdev
4        scsi             scsi_bootdev
4        spi_flash        sf_bootdev
5     *  usb              usb_bootdev
4        virtio           virtio_bootdev
(total hunters: 9)
=> usb stor
Device 0: Vendor: sandbox Rev: 1.0 Prod: flash
            Type: Hard Disk
            Capacity: 4.0 MB = 0.0 GB (8192 x 512)
Device 1: Vendor: sandbox Rev: 1.0 Prod: flash
            Type: Hard Disk
            Capacity: 0.0 MB = 0.0 GB (1 x 512)
=>

Return value

The return value $? is always 0 (true).