Evitar que Windows 10 cambie el orden UEFI del boot

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.

Referencias

Documentación sobre el BCD de Windows

Manual para la distribución Ubuntu