¿Cómo hacer que la BIOS UEFI inicie GRUB, no Windows?

22

El TL; DR, agregado en la edición:

La pregunta es:

¿Cómo puedo hacer que el 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 el BIOS lo inicia. El problema no es con "el disco no es de arranque", porque tanto el arranque UEFI de Windows como el arranque UEFI de Grub son arrancables. El problema es desde qué arranque UEFI el BIOS elige arrancar.

Estoy configurando una nueva computadora, y quiero que arranque por defecto en Ubuntu, pero tengo la opción de seleccionar Windows en el arranque. Esto es especialmente importante si se va la luz y vuelve; Ni siquiera estaré en la casa.

Comencé instalando Ubuntu 17.04 en mi disco NVMe interno, particionado con GPT para usar la mitad del disco y una partición de arranque UEFI separada. GRUB arranca bien, y veo el menú de arranque de GRUB en el inicio donde puedo seleccionar cualquier elemento que GRUB conozca.

Luego instalé Windows 10 Pro desde un ISO descargado recientemente. Instaló Windows Boot Manager en la misma partición UEFI, y dejó el Ubuntu intacto (¡genial!) Y eso 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 forma de iniciar Linux ahora es usar el administrador de inicio de BIOS (F11 en mi BIOS) y seleccionar el cargador de inicio GRUB manualmente. El BIOS UEFI sabe que hay varias instalaciones de arranque en la partición UEFI, porque puedo elegir entre ellas en el administrador de arranque. Sin embargo, cuando estoy en el menú de configuración en el BIOS UEFI, solo me permite elegir "UEFI arrancar mi disco interno" en la selección de prioridad de arranque; no me permite elegir qué cargador de arranque particular en esa partición usar . Y, por defecto, elige Windows, no GRUB.

Los Internet (y este sitio) sugieren que la forma antigua de solucionar esto es ejecutar update-grub(para que GRUB reconozca Windows) y luego grub-install(para volver a colocar GRUB en el dispositivo). Lo he hecho, pero desafortunadamente, todavía tiene el comportamiento como descrito anteriormente, donde el BIOS por defecto elige el Administrador de arranque de Windows. ( update-grubencuentra la instalación del Administrador de arranque de Windows y la agrega al menú, y ese elemento del menú funciona cuando elijo manualmente la partición GRUB en el administrador de arranque UEFI).

¿Qué puedo hacer para que GRUB sea el arranque "predeterminado" en mi partición de arranque UEFI?

Usando una placa base MSI X399 Carbon.

Segunda edición: Debido a que la respuesta correcta termina siendo mencionada en un comentario a una respuesta, la repetiré aquí:

"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.
Jon Watte
fuente
Solo tiene que instalar Windows y luego Linux. No de la otra manera. Tengo exactamente el problema opuesto. Cuando se corta la energía y luego vuelve, mi computadora entra en grub y arranca en Linux, smh. Una cosa es que tengo cada sistema en su propio disco. En el orden de arranque, elijo el disco con Linux y Grub.
dmb
1
Es sorprendente cuántas personas sugieren cosas que ya han sugerido otras personas, y ya dije que no funcionó, ni en mi publicación original ni en los comentarios a continuación. La solución correcta fue "BCDEDIT" en un shell de administrador de Windows. Ninguna de las otras sugerencias lo resolvió (y la mayoría de ellas, ya lo había intentado, según mi pregunta)
Jon Watte

Respuestas:

21

Hay varias maneras diferentes de hacer esto, que incluyen:

  • La utilidad de configuración de EFI : la mayoría de las EFI proporcionan utilidades de configuración a las que puede acceder presionando una tecla especial en el momento del arranque (Esc, Del o una tecla de función, por lo general; pero qué tecla es varía de un sistema a otro). A menudo, pero no siempre, proporcionan una forma de ajustar el orden de arranque. Si su firmware ofrece tal opción, debería poder usarla para mover GRUB a la posición superior. (Es probable que se llame a GRUB ubuntu, dado que lo instaló desde esa distribución).
  • Un shell EFI : puede usar el bcfgcomando en un shell EFI versión 2, como se describe en la wiki de Arch Linux. Si su sistema aún no está configurado con un shell de fácil acceso, es probable que este enfoque sea más difícil de usar que los demás, pero es independiente del sistema operativo.
  • EasyUEFI : es probable que el programa Windows EasyUEFI de terceros sea ​​la forma más fácil de hacer lo que desea. Puede hacer clic en la ubuntuentrada en la lista de EasyUEFI y moverla a la parte superior.
  • bcdedit- El bcdeditcomando de Windows puede alterar el orden de arranque basado en NVRAM. Específicamente, abrir una ventana del símbolo del sistema del administrador y escribir bcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi(opcionalmente seguido de bcdedit /set "{bootmgr}" description "ubuntu"para mantener la descripción razonable) debería ser el truco.
  • efibootmgr- Esta herramienta de Linux puede ajustar el orden de arranque. Comience escribiendo sudo efibootmgrsolo para ver las opciones. Tenga en cuenta el número ( Boot####) asociado con la ubuntuentrada y el orden de arranque actual (en la BootOrderlínea). Luego puede ingresar un nuevo orden de inicio con la ubuntuentrada en la parte superior mediante la -oopción. Por ejemplo, si el orden de arranque actual es 0000,0003,0007,0004 y ubuntues 0007, escribiría sudo efibootmgr -o 0007,0000,0003,0004para ajustar el orden de arranque.
  • refind-mkdefault- Este script viene con rEFInd, y es una forma de automatizar el procedimiento anterior. Si no está usando rEFInd, necesitará descargar el script aquí y hacerlo ejecutable ( chmod a+x refind-mkdefault). Luego lo ejecutará como sudo ./refind-mkdefault -L ubuntuo sudo ./refind-mkdefault -L shimx64para hacer de GRUB la entrada de arranque predeterminada.

Hay posibles problemas y complicaciones con cualquiera de estas opciones. El factor de complicación más probable es si hay ubuntuentradas de arranque antiguas o alternativas . Es importante que mueva el correcto a la posición superior en el orden de arranque; si mueve el incorrecto, terminará sin cambios en el comportamiento o con un arranque no funcional, lo que dificultaría el arranque. Si lo usa efibootmgr, la BootCurrentlínea puede ayudarlo a decir qué opción debe establecer como predeterminada.

Hay otras formas de hacerlo que son excesivas. Reinstalar GRUB (a través de Boot Repair o grub-install) debería hacer el truco, por ejemplo. Sin embargo, estos enfoques corren el riesgo de dañar una configuración GRUB que funciona bien.

Tenga en cuenta también que algunos EFI tienen errores y hay otros problemas que pueden dificultar que GRUB arranque de manera confiable. Es posible que desee consultar estas preguntas y respuestas en AskUbuntu si tiene estos problemas:

Rod Smith
fuente
Como describí en la pregunta, la utilidad de configuración EFI no me permitió elegir ubuntu como predeterminado, aunque me permitió hacerlo en el menú de arranque manual. Simplemente me dejaría elegir el disco, y luego inicia Windows desde eso. efibootmgr intentó cambiar el orden de arranque, pero el BIOS no prestó atención al reiniciar. EasyBCD no funcionó, no me permitió agregar más elementos de menú. Sin embargo, "BCDEDIT" en un shell de administrador realmente funcionó, ¡así que gracias por esa opción!
Jon Watte
Tenga en cuenta que EasyBCD y EasyUEFI son dos programas diferentes del mismo proveedor. Lamentablemente, parece que la versión gratuita de EasyUEFI ya no está disponible, solo se ofrecen versiones de prueba. Sin embargo, BOOTICE es otro programa gratuito que puede editar la configuración de arranque de UEFI: sitio original en chino , sitio en inglés con descripción y capturas de pantalla .
telcoM
Usar sudo efibootmgr -n 0002es mucho mejor que modificar el orden SO actual. Cambia BootNext: 0001y sale BootCurrent: 0002para la próxima vez, dejando intactas sus entradas actuales de GRUB. Simplemente agregue un bash con chmod +xy ajuste ese comando junto con el reinicio.
m3nda
2

He tenido este problema exacto las últimas semanas. Lo descubrí usando estas opciones. Antes de hacer cualquiera de estas cosas, le recomiendo que vaya a su BIOS / UEFI y verifique el orden de arranque y asegúrese de que el lugar donde está instalado grub esté primero en orden.

Entonces, cómo lo veo, tienes dos opciones.

Opción 1

Lo que te recomendaría es instalar Windows 10 primero. Luego instala ubuntu. Pero sé que es un poco tabú decir "reinstalar el software", así que también ofreceré una alternativa.

opcion 2

Con su configuración actual, le recomendaría que inicie en una unidad de CD / flash Live Ubuntu e instale y ejecute boot-repair. Haga clic en la opción "Reparación recomendada" y siga las instrucciones proporcionadas. Revíselo cuidadosamente y lea todos los comandos antes de ejecutarlo. Esto anulará la instalación de grub actual con una nueva que con suerte debería solucionarlo.

taterbotz
fuente
Thansk por las sugerencias, pero ya las había probado. La primera vez que instalé cosas, primero utilicé Windows 10, luego Ubuntu 17.04, luego Reparación de arranque. Todavía estaba predeterminado en Windows, y luego limpié y reinstalé con Ubuntu primero, lo que me lleva a donde estoy ahora.
Jon Watte
Supongo que ha intentado ajustar el orden de arranque en su UEFI, ¿verdad?
taterbotz
Sí, como digo: "cuando estoy en el menú de configuración del UEFI BIOS, solo me permite elegir" UEFI arrancar mi disco interno "en la selección de prioridad de arranque; no me permite elegir qué cargador de arranque en particular en esa partición para usar "
Jon Watte
2

Veo varias soluciones:

  1. Edite su UEFI para ajustar el valor predeterminado. En Linux puedes usar efibootmgr. En Windows no estoy seguro, pero creo que puede iniciar en una opción de recuperación que le permite configurar el UEFI. O tal vez prefiera instalar algo como rEFInd.
  2. Cambie el nombre de la carpeta en la partición EFI. Creo que prefiere o recurre a una carpeta llamada boot.
  3. Simplemente use el cargador de arranque de Windows, creo que se puede configurar para arrancar otros sistemas operativos.
jiggunjer
fuente
Podría editar el orden de arranque usando efibootmgr, pero el BIOS lo ignora e inicia Windows de todos modos. Cambiar el nombre de la carpeta de inicio (o incluso copiar grub en "inicio") no funciona hasta que elimine el de Microsoft. El cargador de arranque de Windows no arranca sistemas operativos que no sean de Windows (al menos no sin firmar)
Jon Watte
@ JonWatte Quizás el gestor de arranque uefi es diferente, recuerdo haber arrancado ubuntu desde el gestor de arranque de Windows 7 en una máquina de BIOS de 32 bits. ¿Quizás todavía puede encadenar grub2? Como efibootmgrno funciona, sé que no compraré MSI.
jiggunjer
Sí, esta placa base MSI también tiene otros problemas y volverá a Amazon a cambio de un Gigabyte.
Jon Watte
1

Acabo de reemplazar mi placa madre en mi computadora portátil y la comida desapareció por completo.

Sé que esto está marcado como fijo, pero pensé que podría ser útil para usted.

Hacer que grub aparezca como una opción de arranque. Necesitaba agregar un EFI a la BIOS.

Fui a la "opción de lista de arranque" en mi BIOS. Hice clic en "Agregar opción de arranque" (soy consciente de que esto es específico de BIOS). Esto me dio una opción para el nombre del archivo, que en mi caso era \EFI\ubuntu\grubx64.efiy le dio un nombregrub

Luego moví la grubentrada a la parte superior de la secuencia de arranque, y ahora se muestra como la entrada predeterminada.

Es decir, es posible que solo necesite localizar el archivo EFI correcto y moverlo a la parte superior de su secuencia / orden de arranque.

Wes
fuente
1

Ninguna de las opciones anteriores funcionó para mí con la vieja computadora portátil HP 655. Descubrí que la solución es configurar el administrador de arranque de Windows inactivo:

sudo -s
efibootmgr
efibootmgr -b 4 --inactive

Reemplace 4 con su número de administrador de arranque de Windows. Ejecute efibootmgr nuevamente y debería ver desaparecer la estrella para marcar la inactividad.

Después de que mi computadora se inicie en el menú de arranque del grupo y las ventanas aún se pueden elegir.

Cmazay
fuente
-2

Una posible solución sería editar manualmente el archivo / etc / default / grub.

sudo vim /etc/default/grub

La entrada predeterminada está determinada por la GRUB_DEFAULT=configuración en / etc / default / grub. La primera "entrada de menú" tiene un valor de "0". Si Ubuntu es la segunda entrada en la pantalla de inicio, configure GRUB_DEFAULT = 1.

Luego, necesitaría ejecutar el comando para actualizar grub config: update-grub

Otra opción sería la instalación de grub-customizer y usar su GUI para configurar la prioridad de arranque.

Señor frambuesa
fuente
El problema no es con Grub. Como dije en la publicación, si puedo hacer que el BIOS elija la opción de arranque Grub UEFI, entonces obtengo el menú de arranque Grub, que me permite elegir Windows o Ubuntu. Este es el menú que quiero por defecto. Desafortunadamente, el BIOS elige Windows Boot Manager por defecto.
Jon Watte
Como dije, puedes arreglarlo en orden de arranque grub configurando Ubuntu como el primer sistema en iniciarse. Use grub-customizer para hacer esto usando GUI. linuxandubuntu.com/home/…
Mr. Raspberry
De nuevo, Grub ni siquiera se inicia con el BIOS. El orden de arranque de Grub no importa. GRUB_DEFAULT no importa. Ese no es el problema aquí.
Jon Watte