efibootmgr: Cambiar el orden de arranque en Linux de equipos con firmware EFI | Algo de Linux

miércoles, 16 de noviembre de 2016

efibootmgr: Cambiar el orden de arranque en Linux de equipos con firmware EFI

Instalar un arranque dual en un equipo moderno con firmware EFI es un problema bastante común hoy en día. 

Los usuarios se encuentran con que, a pesar de instalar Linux, el equipo sigue arrancando directamente a Windows, o que teniendo instalados ambos sistemas operativos, de repente deja de aparecer GRUB en el arranque y tan sólo se inicia windows.

efibootmgr (EFI Boot Manager) es una herramienta muy útil que nos va a permitir cambiar el orden de arranque en sistemas con firmware EFI.

Para disponer de la herramienta efibootmgr, no tenemos más que instalarla desde los repositorios:
# apt-get install efibootmgr
Una vez instalada, la ejecutamos sin parámetros:
# efibootmgr
Y obtendremos una salida parecida a la siguiente la siguiente:
BootCurrent: 0005
Timeout: 0 seconds
BootOrder: 0005,0004,0002,0003,0000,0001,2001,2002,2003
Boot0000* Windows Boot Manager
Boot0001* Internal EFI Shell
Boot0002* ubuntu
Boot0003* ubuntu
Boot0004* Windows Boot Manager
Boot0005* rEFInd Boot Manager
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network
Digo parecida porque dependerá del equipo, de los cargadores de arranque, y de los sistemas operativos que tengáis.
  • En color amarillo, he destacado cuál es la opción de arranque actual; en el ejemplo, la número 0005, que, en mi caso es rEFInd Boot Manager, como podéis comprobar.
  • En color rojo, el timeout, que permite establecer un tiempo de espera para que el usuario elija la opción que desea iniciar.
  • En color verde, el orden de arrranque.
  • En color azul, las diferentes opciones de arranque.
En mi sistema, arrancará el cargador de arranque rEFInd como primera opción. En caso de que no cargue, se iniciaría Windows, a continuación Ubuntu, etc... en el orden marcado en color verde.

Si lo que me interesa es cambiar el BootOrder para que, en caso de no arrancar rEFInd, se inicie Ubuntu antes que Windows, podría usar efibootmgr y establecer el orden que yo quiera. Por ejemplo:
# efibootmgr -o 0005,0002,0003,0000,0004,0001,2001,2002,2003
BootCurrent: 0005
Timeout: 0 seconds
BootOrder: 0005,0002,0003,0000,0004,0001,2001,2002,2003
Boot0000* Windows Boot Manager
Boot0001* Internal EFI Shell
Boot0002* ubuntu
Boot0003* ubuntu
Boot0004* Windows Boot Manager
Boot0005* rEFInd Boot Manager
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network
Por supuesto, podemos indicar un número limitado de opciones en el BootOrder, de tal manera que el resto serán ignoradas:
# efibootmgr -o 2001,0005,0002,0000
BootCurrent: 0005
Timeout: 0 seconds
BootOrder: 2001,0005,0002,0000
Boot0000* Windows Boot Manager
Boot0001* Internal EFI Shell
Boot0002* ubuntu
Boot0003* ubuntu
Boot0004* Windows Boot Manager
Boot0005* rEFInd Boot Manager
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network
Publicado por primera vez en http://enavas.blogspot.com.es