LinuxCommandLibrary

efibootbgr

Manage UEFI boot entries

TLDR

List the current settings / bootnums

$ efibootmgr
copy

List the filepaths

$ efibootmgr -v
copy

Add UEFI Shell v2 as a boot option

$ sudo efibootmgr -c -d [/dev/sda1] -l [\EFI\tools\Shell.efi] -L "[UEFI Shell]"
copy

Change the current boot order

$ sudo efibootmgr -o [0002,0008,0001,0005]
copy

Delete a boot option

$ sudo efibootmgr -b [0008] --delete-bootnum
copy

SYNOPSIS

efibootmgr [-v | --verbose] [-b | --bootnum] NNNN [-c | --create] [-L | --label] "label" [-l | --loader] \EFI\path\loader.efi [-d | --disk] /dev/sdX [-p | --part] NN [-o | --bootorder] NNNN,...

PARAMETERS

-b, --bootnum NNNN
    Operate on specific boot entry by hex number

-B
    Delete boot entry by number (deprecated)

-c, --create
    Create new boot entry

-C NNNN, --copy NNNN
    Copy existing boot entry NNNN

-d DEV, --disk DEV
    Specify source disk (path, label, or UUID)

-D, --delete-boot-order
    Delete boot order variables

-e ESP, --esp ESP
    Specify EFI System Partition

-i
    Print boot entry information

-l \EFI\path, --loader \EFI\path
    Set loader file path

-L "label", --label "label"
    Set boot entry label

-n NNNN, --bootnext NNNN
    Set one-time BootNext entry

-N, --delete-bootnext
    Delete BootNext variable

-o NNNN,..., --bootorder NNNN,...
    Set BootOrder list

-O, --query-options
    Print supported boot options

-p NN, --part NN
    Specify partition number

-q, --quiet
    Reduce output verbosity

-r PATH, --root PATH
    Set root device (deprecated)

-t SEC, --timeout SEC
    Set boot menu timeout

-u, --unicode
    Pass ESC key to firmware

-v, --verbose
    Verbose mode

-V, --version
    Print version

-h, --help
    Show help

-@ FILE
    Read command-line args from file

DESCRIPTION

efibootmgr is a user-space application for managing UEFI (EFI) boot entries on Linux systems running in UEFI mode. It provides a command-line interface to view, create, delete, modify, and reorder boot menu entries stored in the EFI firmware's NVRAM variables, accessible via /sys/firmware/efi/efivars.

Primarily used in multi-boot environments, system recovery, or customizing boot order (e.g., prioritizing GRUB over Windows Boot Manager). The tool requires root privileges for modifications, as it interacts directly with EFI variables. Running without EFI firmware (efivarfs not mounted) will fail.

Common tasks include listing entries with -v, creating new ones specifying disk, partition, loader path (e.g., \EFI\ubuntu\shimx64.efi), and label, or setting one-time BootNext. It supports querying supported options, timeouts, and boot orders. Verbose output aids debugging boot issues.

efibootmgr ensures safe operations like testing creations without committing. It's essential for EFI-based installations, complementing bootloaders like GRUB or systemd-boot.

CAVEATS

Requires root privileges and EFI firmware support. Modifying boot entries risks unbootable systems; backup NVRAM first. Paths must use \ escapes. Limited to 128 chars for labels. Not for BIOS/Legacy mode.

COMMON USAGE

List entries: efibootmgr -v
Create Linux entry: efibootmgr --create --disk /dev/sda --part 1 --label "Linux Mint" --loader \\EFI\\mint\\shimx64.efi
Set order: efibootmgr -o 0000,0001

VERIFICATION

Mount efivarfs: mount -t efivarfs efivarfs /sys/firmware/efi/efivars. Check with lsblk -f for ESP.

HISTORY

Developed by Rod Smith (rbs@kernel.org) starting 2007. Integrated into major distros via efibootmgr package. Version 17 (2020) added ESP support, copy features. Maintained upstream at sourceforge.net/projects/efibootmgr.

SEE ALSO

efivar(8), efivars(8), grub-install(8), systemd-boot(7)

Copied to clipboard