El TL;DR, añadido en la edición:
La pregunta es:
¿Cómo puedo hacer que la BIOS prefiera GRUB sobre Windows Boot Manager en la misma partición de arranque UEFI?
El problema no es con Grub; Grub hace lo correcto cuando la BIOS lo inicia. El problema no es con "el disco isn't bootable," porque tanto el bootstrap UEFI de Windows como el bootstrap UEFI de Grub son booteables. El problema es qué UEFI bootstrap el BIOS elige para arrancar.
Estoy configurando un ordenador nuevo y quiero que arranque por defecto en Ubuntu, pero que tenga la opción de seleccionar Windows al arrancar. Esto es especialmente importante si se va la luz y vuelve; Ni siquiera voy a estar en la casa.
Empecé instalando Ubuntu 17.04 en mi disco interno NVMe, particionado con GPT para usar la mitad del disco, y una partición de arranque UEFI separada. GRUB botas que muy bien, y veo el menú de arranque GRUB en el arranque donde puedo seleccionar cualquier elemento GRUB sabe acerca de.
Luego instalé Windows 10 Pro desde una ISO descargada recientemente. Se instaló Windows Boot Manager en la misma partición UEFI, y dejó el Ubuntu intacto (¡genial!) y que arranca bien en Windows 10.
Sin embargo, hizo "algo" que hace que el firmware UEFI seleccione inmediatamente el Administrador de arranque de Windows en lugar de GRUB en el encendido. La única manera de arrancar Linux ahora es utilizar el gestor de arranque de la BIOS (F11 en mi BIOS) y seleccione el gestor de arranque GRUB manualmente. La BIOS UEFI sabe que hay múltiples instalaciones arrancables en la partición UEFI, porque puedo elegir entre ellas en el gestor de arranque. Sin embargo, cuando estoy en el menú de configuración de la BIOS UEFI, sólo me deja elegir "Arranque UEFI de mi unidad interna" en la selección de prioridad de arranque - no me deja elegir qué gestor de arranque concreto de esa partición usar. Y, por defecto, elige Windows, no GRUB.
En internet (y en este sitio) se sugiere que la forma antigua de arreglar esto es ejecutar update-grub
(para que GRUB reconozca Windows) y luego grub-install
(para volver a poner GRUB en el dispositivo.) He hecho esto, pero desafortunadamente, todavía tiene el comportamiento descrito anteriormente, donde la BIOS por defecto elige Windows Boot Manager. (update-grub
sí encuentra la instalación de Windows Boot Manager, y la añade al menú, y ese elemento del menú funciona cuando elijo manualmente la partición GRUB en el gestor de arranque UEFI).
¿Qué puedo hacer para que GRUB sea el arranque "por defecto" en mi partición de arranque UEFI?
Uso una placa base MSI X399 Carbon.
Segunda edición: Debido a que la respuesta correcta termina siendo mencionado en un comentario a una respuesta, I'll repetirlo aquí:
"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.
He estado teniendo este problema exacto las últimas semanas. Lo resolví usando estas opciones. Antes de hacer cualquiera de estas cosas te recomiendo que vayas a tu BIOS/UEFI y compruebes el orden de arranque y te asegures de que donde está instalado grub es el primero en orden.
Así que como yo lo veo es que tienes dos opciones.
Lo que yo te recomendaría es instalar Windows 10 primero. Luego instalar ubuntu. Pero sé que es un poco tabú para decir simplemente "reinstalar su software" así que I'll ofrecen una alternativa también.
Con su configuración actual le recomiendo que arranque en un Live Ubuntu CD / unidad flash e instalar y ejecutar boot-repair
. Haga clic en el "Reparación recomendada" opción y siga las instrucciones dadas. Revise cuidadosamente y lea todos los comandos antes de ejecutar. Esto anulará la instalación actual de grub con una nueva que debería arreglarlo.
Veo varias soluciones:
efibootmgr
. En Windows no estoy seguro pero creo que puedes arrancar con una opción de recuperación que te permite configurar la UEFI. O puede que prefieras instalar algo como rEFInd.boot
.Una posible solución sería editar manualmente el archivo /etc/default/grub.
sudo vim /etc/default/grub
La entrada por defecto está determinada por el parámetro GRUB_DEFAULT=
en /etc/default/grub. La primera "entrada de menú" tiene un valor de "0". Si Ubuntu es la segunda entrada en la pantalla de arranque entonces establezca GRUB_DEFAULT=1.
Después, necesitará ejecutar el comando para actualizar la configuración de grub:
update-grub
Otra opción sería instalar grub-customizer y usar su GUI para configurar la prioridad de arranque.