Actualizado el 13/06/2021 añadiendo el apartado con la configuración del orden del Boot de la BIOS: Configuración del Grub2 Boot como primera opción.
En equipos con inicio dual de los sistemas operativos de Linux y Windows, si en cada inicio de Windows cambia el orden arranque UEFI (Boot), esto se debe al orden incorrecto del Windows Boot Manager, así como la entrada por defecto.
La configuración del Windows Boot Manager se realizan con el comando bcdedit, siendo los los pasos los siguientes:
Abrir un consola de comando CMD en modo administrador
Obtener la configuración actual:
C:\WINDOWS\system32>bcdedit
Administrador de arranque de Windows
----------------------------------
Identificador {bootmgr}
device partition=C:
path \EFI\Microsoft\Boot\bootmgfw.efi
description Windows Boot Manager
locale es-ES
inherit {globalsettings}
default {default}
resumeobject {d137d968-b736-11ea-88fd-ed4f51a2d0c1}
displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Cargador de arranque de Windows
-----------------------------
Identificador {default}
device partition=C:
path \WINDOWS\system32\winload.efi
description Windows 10
locale es-ES
inherit {bootloadersettings}
recoverysequence {8839051c-b72e-11ea-8103-f42c40c72b88}
displaymessageoverride Recovery
recoveryenabled Yes
isolatedcontext Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \WINDOWS
resumeobject {d137d968-b736-11ea-88fd-ed4f51a2d0c1}
nx OptIn
bootmenupolicy Standard
El comando anterior muestra la configuración del Administrador de arranque de Windows (Windows Boot Manager), es que es primero que se muestra y que tiene como identificador {bootmgr} y después muestra la entrada UEFI que se ha cargado actualmente y que en este caso es la entrada (default).
Se han marcado en negrita los valores a comprobar, en el caso que se muestra se observa lo siguiente:
En el bootmgr el valor de parámetro path corresponde con el cargador del boot manager de Windows (\EFI\Microsoft\Boot\bootmgfw.efi) y el cargado del parámetro default es el cargador de Windows, para corregir el problema y evitar que el Windows restaure el boot en cada inicio hay que cambiar esos parámetros, configurando los correspondientes al Grub2.
Lo siguiente será localizar el identificador del cargador de Linux así como path de la entrada UEFI.
Obtendremos toda la lista de cargadores y entradas que existen, ejecutando el siguiente comando:
bcdedit /enum all
Entre la lista que se mostrará, localizaremos al que corresponde la Grub2 del sistema operativo del Linux, que en mi caso es el siguiente:
Aplicación de firmware (101fffff)
---------------------------------
Identificador {bf6c2251-7798-11eb-81b3-806e6f6e6963}
device partition=\Device\HarddiskVolume2
path \EFI\opensuse\grubx64.efi
description opensuse
Nos harán falta los datos de las dos líneas marcada en negrita, los usaremos para configurar el Administrador de arranque de Windows ({bootmgr}), ejecutaremos los siguientes comandos:
bcdedit /set {bootmgr} path \EFI\opensuse\grubx64.efi
bcdedit /set {bootmgr} default {bf6c2251-7798-11eb-81b3-806e6f6e6963}
Procederemos a reiniciar y a confirmar que se muestra el Grub de Linux y que en caso de iniciar Windows vuelve a mostrar el Grub de Linux en el siguiente reinicio del sistema.
Configuración del Grub2 Boot como primera opción
También hay que comprobar el orden en el inicio del equipo, que será el que determina que Boot muestra la BIOS al cargar. En Windows esto también configura con el comando bcdedit en el identificador {fwbootmgr}.
Debemos comprobar que la primera opción del {fwbootmgr} no esté el {bootmgr} de Windows sino el correspondiente al Grub2 Boot de Linux.
Los pasos para comprobar y cambiar el orden serían los siguientes:
- Mostrar la configuración actual
C:\WINDOWS\system32>bcdedit /enum {fwbootmgr}
Administrador de arranque de firmware
-----------------------------------
Identificador {fwbootmgr}
displayorder {bootmgr}
{bf6c2251-7798-11eb-81b3-806e6f6e6963}
{ce05a55d-c63f-11eb-827c-a01d48c07fb4}
timeout 0
Como se muestra en el caso anterior, la primera opción del campo displayorder es el {bootmgr}, de tal forma que se cargará directamente Windows.
- Buscamos el Grub2 Boot de Linux
Se haría ejecutando el comando bcdedit /enum all, el cual se ha ejecutado anteriormente y para nuestro ejemplo corresponde con el identificador {bf6c2251-7798-11eb-81b3-806e6f6e6963}
- Configurar el Grub2 Boot de Linux como primera opción
C:\WINDOWS\system32>bcdedit /set {fwbootmgr} displayorder {bf6c2251-7798-11eb-81b3-806e6f6e6963} /addfirst
La operación se completó correctamente.
- Comprobación orden correcto
C:\WINDOWS\system32>bcdedit /enum {fwbootmgr}
Administrador de arranque de firmware
-----------------------------------
Identificador {fwbootmgr}
displayorder {bf6c2251-7798-11eb-81b3-806e6f6e6963}
{bootmgr}
{bf6c2251-7798-11eb-81b3-806e6f6e6963}
{ce05a55d-c63f-11eb-827c-a01d48c07fb4}
timeout 0
C:\WINDOWS\system32>
Como se puede ver ahora la opción primera es el Grub2 de Linux, con esto ya se debería mostrar la pantalla de selección de los sistemas operativos de Linux y no directamente la carga de Windows