Cómo utilizar efibootmgr para manejar el menú de UEFI

Vemos en que consite efibootmgr y cómo utilizarlo para manejar el menú de arranque de UEFI. La idea de esta entrada es que recientemente me tuve que pelear con dicho menú, en una máquina física, por lo que valga esta entrada también para mis apuntes.

Efibootmgr es una aplicación de espacio de usuario, que se utiliza para modificar el administrador de arranque para el Intel Extensible Firmware Interface (EFI). Con esta aplicación podemos crear y eliminar entradas del arranque, cambiar el orden de dicho arranque, cambiar la siguiente opción de arranque ejecución, entre otros.

Logo de UEFI

Instalación y ejemplos de efibootmgr

Instalación de efibootmgr en GNU/Linux

Veamos cómo instalar esta herramienta en las distribuciones GNU/Linux más comunes:

Instalación en Debian, Ubuntu, Linux Mint y similares:

sudo apt install efibootmgr

Instalación en Fedora, Centos, RHEL y similares:

sudo dnf install efibootmgr

Instalación en OpenSUSE y SUSE:

sudo zypper install efibootmgr

Instalación en Arch Linux, Manjaro y similares:

sudo pacman -S efibootmgr

Ejemplos de uso de efibootmgr

1. Visualizar los ajustes actuales

Simplemente debemos ejecutar el siguiente comando. En algunas distribuciones GNU/Linux como Debian, se debe utilizar con permisos de sudo.

efibootmgr

Con este comando podemos ver la entrada de inicio predeterminada (BootCurrent), el orden de inicio y todas las entradas de inicio. Cada entrada de inicio se identifica mediante un número de inicio en hexadecimal. El asterisco (*) significa que la entrada de inicio está activa.

Si utilizamos el parámetro «-v» se nos ofrecerá la información de forma amplia:

efibootmgr -v

De esta manera podemos ver el número de partición del sistema EFI, el tipo de tabla de particiones (GPT), el UUID de la partición del sistema EFI y el archivo del cargador de arranque.

2. Cambiar el orden de arranque

Primero copiamos el orden actual, por ejemplo:

0013,0012,0014,0000,0001,0002,0003,000D,0011,0007,0008,0009,000A,000B,000C,000E

Para realizar el cambio usaremos el comando más el parámetro «-o«, de la siguiente manera:

sudo efibootmgr -o

Y agregamos el orden de arranque al comando anterior:

sudo efibootmgr -o 0013,0012,0014,0000,0001,0002,0003,000D,0011,0007,0008,0009,000A,000B,000C,000E

Supongamos que deseamos que 0012 sea la primera entrada de inicio. Todo lo que debemos hacer es moverlo a la izquierda de 0013, como sigue:

sudo efibootmgr -o 0012,0013,0014,0000,0001,0002,0003,000D,0011,0007,0008,0009,000A,000B,000C,000E
3.Añadir una nueva entrada

Si hemos instalado varias distribuciones en el mismo equipo, pero una de las distribuciones no tiene una entrada de arranque UEFI, se puede agregar de forma manual.

Debemos iniciar en la disitribución GNU/Linux que no tenga dicha entrada de arranque UEFI. Luego, nos debemos asegurar de que tenga instalada la versión EFI del cargar de arranque de GRUB.

En Debian, Ubuntu o Linux Mint

sudo apt install grub-efi

En Fedora:

sudo dnf install grub2-efi-modules

A continuación, debemos montar la partición del sistmea EFI en el directorio «/boot/efi», por ejemplo:

sudo mount /dev/sda3 /boot/efi/

Y realizamos la instalación del menú Grub

sudo grub-install /dev/sda --target=x86_64-efi --efi-directory=/boot/efi/

«x86_64-efi» significa que vamos a instalar Grub para el firmware UEFI. El destino predeterminado es i386-pc, que es para el firmware de BIOS tradicional.

Ahora deberíamos ver una nueva entrada en el menú de arranque de UEFI con el comando bootmgr, cómo hemos dicho antes. El instalador de Grub primero instala un archivo «.efi bootloader» en el directorio «/boot/efi/EFI/etiqueta«. Generalmente se llama «grubx64.efi«. En el siguiente comentado agregamos una nueva entrada en el menú de inicio de UEFI:

efibootmgr -c -d /dev/sda -p 3 -L "etiqueta" -l \EFI\"label"\grubx64.efi
4. Eliminar la entrada en el arranque

Si hemos instalado varias distribuciones de GNU/Linux en un disco duro, por lo que tenemos varias entradas de arranque. Y si hemos eliminado una de las distribuciones, la línea de dicha entrada aún continuará en lista del menú UEFI. Para eliminar la entrada de inicio correspondiente, debemos hacer:

sudo efibootmgr -b "bootnum" -B

Por ejemplo:

sudo efibootmgr -b 0014 -B

Con el parámetro «-b» se especifica el número de línea, con «-B» se elimina dicha línea.

5. Especificar una entrada activa o desactiva

Una entrada de inicio seguida de un asterisco indica que está activo. De los contrario, está inactivo. Para establecer una entrada de arranque activa, ejecutamos:

sudo efibootmgr -b "bootnum" -a

Para establecer una entrada de arranque inactiva, ejecutamos:

sudo efibootmgr -b "bootnum" -A

Y esto es todo en esta entrada.

Fuentes consultadas:

Página de man de efibootmgr

Linxbabe.com – Use Linux efibootmgr Command to Manage UEFI Boot Menu