No se puede hacer que el menú de grub se agote

18

Estoy ejecutando Ubuntu 12.04.

No puedo por mi vida hacer que el menú de grub (con opciones) desaparezca.

Me gustaría que se inicie automáticamente en la primera opción. He editado / etc / default / grub para que tenga el siguiente aspecto:

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

Después de esto, ejecuté sudo update-grub . Luego me di cuenta de que tenía grub 2, así que ejecuté sudo update-grub2 (ambos hacen que parezca que crean el archivo grub.cfg con éxito.

Reinicio mi computadora y vuelve al menú de grub y se queda allí hasta que elijo. Esto no es deseable si se va la luz ... :-)

También intenté reinstalar grub usando sudo grub-install / dev / sda , que tampoco tuvo éxito

Eric
fuente
¿Por casualidad tiene otra partición en la que instaló Ubuntu después de configurar la partición actual en la que ahora desea iniciar automáticamente?
fabricante 4
No estoy seguro de lo que quieres decir, soy un poco nuevo en Linux. Instalé sobre una instalación anterior de Ubuntu, pero no actualicé. Instalación limpia Es posible que haya acumulado algo en partición ... eso es posible, ¿alguna idea sobre cómo solucionarlo?
Eric
sudo update-gruby sudo update-grub2ejecuta el mismo comando. Entonces, no te preocupes por esa parte.
saji89
Publique la salida de cat /boot/grub/grub.cfg via pastebin y comparta el enlace aquí. Esto es para ver el real grub.cfggenerado.
saji89
Aquí está el pastebin: pastebin.com/xxe2rLhg de grub.cfg. ¡Gracias por toda tu ayuda!
Eric

Respuestas:

22

Como señalan otras respuestas, puede ser víctima de la situación de falla de registro . La edición /boot/grub/grub.cfgmanual debe estar fuera de discusión, ya que se genera automáticamente. Otra sugerencia que se ve es editar, /etc/grub.d/00_headerpero luego podría solicitar la intervención del usuario en las actualizaciones.

La solución más fácil es definir la variable indocumentada GRUB_RECORDFAIL_TIMEOUT en /etc/default/grub. Por ejemplo:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

Editar

Vea esta respuesta para más detalles.

C2H5OH
fuente
¡Muchas gracias, esto es exactamente lo que estaba buscando!
Avio
Después de realizar el cambio, también ejecute update-grubpara generar el /boot/grub/grub.cfgarchivo actualizado
Colt
¡No mates la funcionalidad de recordfail! Desea un tiempo de espera más largo si hubo un error al arrancar. Para borrar manualmente, todo lo que necesita es la respuesta de @ sniffski: grub-editenv create. Sin embargo, podría haber alguna otra razón por la que recordfailse está preparando ...
Cameron Tacklind
6

Utilizar:

grub-editenv create

Esto borrará el archivo de entorno grub y debería iniciarse claramente la próxima vez.

sniffski
fuente
Muchas gracias por compartir. Esto funcionó a través de SSH, lo que me hizo el día para un servidor sin cabeza atascado en grub.
Geppettvs D'Constanzo
1
grub-editenv - unset recordfailfunciona igual de bien y no afecta a otros entornos que podrían establecerse
Cameron Tacklind
2

cambia el GRUB_TIMEOUT=10a cero

Este es mi archivo de configuración:

GRUB_DEFAULT="Ubuntu, with Linux 3.2.0-30-generic-pae"
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

Primero, escriba el nombre del sistema operativo en el que desea iniciar directamente. El mío es Ubuntu. Entonces lo escribirás como en elGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

luego usé 1 segundo en el GRUB_TIMEOUT=para darme 1 segundo antes de seleccionar el sistema operativo predeterminado (si necesito arrancar a otro sistema operativo, por ejemplo, Xubuntu)

en cuanto a GRUB_CMDLINE_LINUX_DEFAULT=""si lo eliminas quite splash, te mostrará textos en lugar del logotipo de Ubuntu durante el proceso de arranque (me gusta de esta manera: P)


Hay otra solución:

Hay un programa llamado boot-repair que ayuda a configurar con una GUI.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

como puedes ver en la imagen. hay una caja llamada Unhide boot menu. Simplemente desmarca la casilla y presiona appy. Puede acceder a esto haciendo clic en la flecha de opciones avanzadas.

instalar reparación de arranque

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install -y boot-repair

y luego ejecutar boot-reapirdesde la terminal o desde el tablero.


3ra solución:

Puede usar una aplicación GUI fácil de usar llamada grub-customizer para hacer su vida un poco más fácil. Como su nombre lo indica, puede hacer mucho más que simplemente reordenar las entradas del menú Grub con él.

Puedes instalarlo de la siguiente manera:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

ingrese la descripción de la imagen aquí

Como puede ver en el menú hay una show menuopción. Desbloquee y vea si funciona

Suhaib
fuente
Ningún cambio. : - / / ¿Pensé que GRUB_DEFAULT se suponía que era un # numérico de acuerdo con la lista en el menú? Cambiar GRUB_TIMEOUT a 0 no ayudó.
Eric
@Eric puede usar 2 formas: si conoce el lugar de su sistema operativo en la lista de grub, puede usar un número. Pero para mí tengo 4 distribuciones de Linux y 1 Windows más el memTest y la recuperación. Así que es difícil para mí memorizar sus lugares :) solo para asegurarme (sé que puede haberlo hecho pero solo para asegurarme: P). ¿Ejecutó el grub-updatedespués de cambiar los valores?
Suhaib
Ejecuté grub-update después de cambiar los valores. : - /
Eric
Instalé y utilicé la aplicación de reparación de arranque que proporcionó, funciona en el primer reinicio. Después de eso, el menú GRUB está de vuelta y se queda allí hasta que presiono una tecla. Gracias por toda su ayuda, realmente lo aprecio. No estoy seguro de a dónde ir desde aquí ...
Eric
@Eric ok, encontré una tercera solución, compruébalo
Suhaib
2

GRUB_HIDDEN_TIMEOUTy las GRUB_HIDDEN_TIMEOUT_QUIETopciones están en desuso. Así que comente esos.

Para omitir el menú y mostrarlo cuando solo se mantiene presionado ESC, agregue:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Muestra /etc/default/grub

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=countdown
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

'GRUB_TIMEOUT_STYLE' : si esta opción está configurada en 'cuenta regresiva' u 'oculta', entonces, antes de mostrar el menú, GRUB esperará a que caduque el tiempo de espera establecido por 'GRUB_TIMEOUT'. Si se presiona ESC durante ese tiempo, mostrará el menú y esperará la entrada.

Gayan Weerakutti
fuente
que deberían , pero lo único que hace es mostrar el menú estándar durante 1 segundo. Al menos en un nuevo 16.04
viernes
1

Podría resolver ese problema agregando la siguiente línea a /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... y luego corriendo sudo update-grub.

Explicación: El archivo /boot/grub/grub.cfgse genera al ejecutarse update-grubutilizando los archivos en /etc/grub.dy /etc/default/grub. Por lo tanto, no debe editar grub.cfg, pero puede ser útil averiguar por qué está configurado el tiempo de espera. Busque líneas que comienzan con set timeout=y luego busque la siguiente línea que comienza con ### END /etc/grub.d/ .... Esto podría darle pistas sobre qué script establece el tiempo de espera. En mi caso, el script os-prober fue responsable del tiempo de espera. Resulta que hay un tiempo de espera codificado de 10 segundos en el /etc/grup.d/30_os-proberque no se establece GRUB_TIMEOUT. Puede deshabilitar os-prober GRUB_DISABLE_OS_PROBER=trueo editar /etc/grup.d/30_os-probero usar GRUB_OS_PROBER_SKIP_LISTpara omitir algunas de sus particiones de disco duro (30_os-prober se usa cuando se encuentra otro sistema operativo en algún lugar). Vea estas preguntas y respuestas para más detalles. Como otros señalaron, otra razón podría ser el error de registro , en este caso establecido GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.

lumbric
fuente
0

Tuve el problema de que el menú grub aparecía siempre después de usar AUFS (unionfs) para poner el sistema de archivos raíz de solo lectura. Físicamente tenía que presionar la tecla Intro en el servidor después de cada arranque. Seguí las instrucciones aquí: deshabilitar el menú de grub 2 . Desde entonces, no tuve ningún problema en absoluto.

Edite /boot/grub/grub.cfg y cambie:

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi

A

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi
Fabio Vaz
fuente
El antes y el después en su solución son exactamente los mismos.
RawwrBag
set timeout=-1No es lo mismo que set timeout=1. El primero es "esperar para siempre", y el segundo es "esperar un segundo".
Jeff McJunkin
0

Mi Ubuntu siempre tuvo un tiempo de espera de 30 segundos, ya sea que hubiera establecido un valor o no. Aquí después es cómo descubrí que recordfail era el valor faltante .

1. Verifique el script de grub real /boot/grub/grub.cfg

En mi humilde opinión, la mejor manera de verificar lo que hará Grub, es abrir /boot/grub/grub.cfg. Es el script generado automáticamente mediante el grub-mkconfiguso de plantillas /etc/grub.dy configuraciones desde /etc/default/grub.

Alrededor de la línea 109, verá ver algo como:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=30 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

En mi caso, con la ayuda de ese script generado, pude descubrir que la recordfailvariable no estaba configurada.

2. Si la recordfailvariable no está configurada, configúrela

Abra /etc/default/gruben su editor de texto favorito (por ejemplo, vim) y luego configure la variable GRUB_RECORDFAIL_TIMEOUTen un valor dado, por ejemplo 5 segundos.

Su archivo de configuración debería verse así:

GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5

3. Actualice la configuración para ejecutar con update-grub

Último paso, actualice la configuración para ejecutar update-grub. Por ahora, GRUB2 usará el tiempo de espera establecido. Este comando regenerará el /boot/grub.cfgarchivo.

4. Verifique el resultado del script generado

Nuevamente, abra /boot/grub.cfgy verifique el resultado alrededor de la línea 109:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=5 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

Tenga en cuenta que el valor en la línea 109 ahora es 5 en lugar de 30 como antes.

KeyMaker00
fuente