¿Cómo puedo hacer que mi menú de GRUB esté oculto Y que las teclas shift o esc muestren el menú de GRUB oculto en el momento del arranque?

10

Estoy ejecutando Ubuntu 16.10, y estoy tratando de ocultar mi menú GRUB en el momento del encendido / arranque, y deseo que el menú aparezca solo cuando presiono las teclas Shifto Esc.

Cambio las opciones apropiadas /etc/default/gruby todavía no ocultará el menú.

Al investigar esto, encontré que esta publicación del menú oculto de GRUB 2013 no funciona, lo que indica que el problema ha existido por un tiempo y sugiere un cambio /etc/grub.d/30_os-proberque preferiría no hacer. Ese código sugiere que, dado que encontró múltiples sistemas operativos, establecerá el de GRUB_TIMEOUT=10todos modos.

Aquí hay un fragmento de lo que tengo ahora /etc/default/grub... un menú con una cuenta regresiva de 10 segundos ...

GRUB_DEFAULT = guardado
GRUB_SAVEDEFAULT = verdadero
GRUB_HIDDEN_TIMEOUT_QUIET = verdadero
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT = "splash silencioso"

Si Descomentar #GRUB_HIDDEN_TIMEOUT=0, a continuación, sudo update-grubinsiste en que también me puse GRUB_TIMEOUT=10a GRUB_TIMEOUT=0. Hago eso y aún veo el menú de GRUB.

En terminal, la escritura info -f grub -n 'Simple configuration'describe las diversas opciones y, al final de la información, muestra que algunos de los comandos actuales se han depreciado y sugiere que los reemplazos más nuevos son mejores.

¿Alguien sabe cómo puedo hacer que mi menú GRUB se oculte en 16.10 Y que reconozca Shifto las Escteclas en el momento del arranque?

heynnema
fuente
Me alegra que hayas preguntado esto. Tampoco pude hacer que el mío funcionara, y esto confirma que se debe a que la caja es de doble arranque.
Mármol orgánico
1
@OrganicMarble El problema tiene que ver con múltiples sistemas operativos. Para probar, modifiqué esa parte del código en /etc/grub.d/30_os-prober, y aunque no obtuve un menú, no pude forzar un menú con shift o esc en el momento del arranque. Sigo trabajando en eso.
heynnema
Agregué más información sobre errores relacionados con los suyos en mi respuesta, pueden ayudarlo a comprender la naturaleza del problema más a fondo. También estoy mirando el código Grub2 - tratando de ayudar :)
xtrchessreal
Intente usar Grub Customizer si no lo ha hecho, pestaña Configuración general en este orden: 1 Desmarque la casilla "buscar otros sistemas operativos" y 2 Desmarque "mostrar menú" y luego guarde. Pruebe eso y vea si "Shift" mostrará el menú y luego qué sucede si no se presiona nada.
xtrchessreal
Puedo entender que prefieres no modificar, /etc/grub.d/30_os-proberpero realmente no veo el daño. Puede mantener una copia de seguridad o #Comentar sus cambios para que pueda revertirlos si es necesario. La solución que encontró parece la solución más razonable en este momento.
Élder Geek

Respuestas:

7

OK amigos, esta es la respuesta ... para obtener un menú GRUB oculto en configuraciones de arranque dual ... dos ediciones ... y una sudo update-grub...

Editar # 1

Para obtener un menú GRUB oculto en una configuración de arranque múltiple, primero tenemos que editar /etc/default/grub. Abra este archivo con el siguiente comando:

sudo editor /etc/default/grub

Una vez que el archivo esté abierto, reemplace estas líneas

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

con estos:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

Esto hará que GRUB muestre un temporizador de cuenta regresiva de 3 segundos en la pantalla. Al hacer esto, un usuario puede presionar la Esctecla para que aparezca el menú predeterminado. De lo contrario, se iniciará el sistema operativo predeterminado.

Si desea que el SO predeterminado se configure en el último SO arrancado, agregue las dos líneas debajo de "GRUB_TIMEOUT = 3" que se muestra arriba:

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

Editar # 2

A continuación, el probador del sistema operativo debe actualizarse para deshabilitar la función de arranque rápido. Para hacer esto, abra /etc/grub.d/30_os-proberen su editor favorito y cambie la línea a continuación (línea 23 en 17.04) reemplazando la 1con 0:

quick_boot="1"

Cuando haya terminado, la línea debería leer como:

quick_boot="0"

Guarde los archivos y luego ejecute el siguiente comando para reconfigurar el gestor de arranque y aplicar sus cambios:

sudo update-grub
heynnema
fuente
Eso lo hizo! +1.
Mármol orgánico
Parece una buena solución :) Ahora tengo una pregunta simple al respecto. Si cambia el GRUB_TIMEOUT de "3" a "1", ¿arrancará más rápido? ¿Y puede proporcionar enlaces, si los hay, donde uno puede leer cómo funciona este código? Quiero entender qué está haciendo este código y su secuencia de llamadas a funciones, etc. Muy apreciado. Es bueno cuando puedes resolver tus propias preguntas, buen trabajo en eso.
xtrchessreal
@xtrchessreal sí, cambiar el 3 a 1 hace que sea 2 segundos más corto. Pensé que 3 segundos era tiempo suficiente para que yo pudiera pasar a la tecla Esc, si quería. Puedes mirar info -f grub -n 'Simple configuration'para más información.
heynnema
+1 para Q y +1 para A. Las últimas dos noches he estado buscando en Google todo tipo de modificaciones en el cerebro a 30_os-apropiado, creando 31_blah_blah y creando 40_custom todo en vano. Esto está en AU, ArchLinux, Fedora y muchos otros lugares. Si desea obtener más votos, sugeriría rastrear todas las respuestas incorrectas aquí en AU (hay muchas) y Votar para cerrarlas como duplicados de este y luego enviarme un ping ( @ me) en la sala de chat general de la UA con un enlace al duplicado y también lo votaré. ¡Gracias por esta gran investigación y solución de trabajo! :)
WinEunuuchs2Unix
@ WinEunuuchs2Unix gracias por el bonito comentario, y los votos! Yo mismo investigué mucho antes de encontrar que nadie tenía una solución elegante, o alguna solución en absoluto ... pero estaba decidido :-)
heynnema
3

Creo que este problema puede deberse a múltiples sistemas operativos de acuerdo con este extracto de Grub2 wiki :

Si no se detecta ningún otro sistema operativo, GRUB 2 se iniciará directamente en el sistema operativo predeterminado y no se mostrará ningún menú. Si se detecta otro sistema operativo, aparecerá el menú GRUB 2 .

Y

Se puede guardar un sistema operativo ejecutando sudo grub-set-default si GRUB_DEFAULT = salvado se configura en / etc / default / grub. También se puede guardar si GRUB_SAVEDEFAULT = true también se establece en / etc / default / grub. En este caso, el sistema operativo predeterminado permanece hasta que se seleccione manualmente un nuevo sistema operativo del menú GRUB 2 o se ejecute el comando grub-set-default.

El Wiki de Grub2 también establece: Nota: Hay un error confirmado desde hace mucho tiempo en la función de menú oculto en GRUB 1.97 a GRUB 1.99. Es posible que el menú no se oculte como se especifica en la descripción de esta página. Si bien la edición del script 30_os-prober puede solucionar este problema, está más allá del alcance de esta página.

Como solución alternativa, puede configurar el GRUB_TIMEOUT="1"y solo verá el menú durante 1 segundo. Si necesito cambiar a otro sistema operativo, simplemente presiono la tecla de flecha hacia abajo dentro de ese segundo y el menú aparecerá hasta que haga una elección.

Puede haber un posible problema de sintaxis asociado con el error. No soy un experto en Grub2, pero en mi archivo grub cada línea de comando termina con = "alguna configuración entre comillas" Recuerdo de mis días de codificación que las "comillas" debían pasar una cadena donde, como no comillas, pasaban valores numéricos simples a las variables. No estoy UP en nuevas técnicas de código. Por ejemplo, aquí hay algunos de mis resultados de grub:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT="Ubuntu"
#GRUB_HIDDEN_TIMEOUT="0"
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=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

Estoy buscando en este Grubbug :) para obtener más información, así como este error. Ambos son 2 años relacionados con Grub2 . Algo de esto podría estar relacionado con el código MBR antes de la transferencia a Grub2

xtrchessreal
fuente
Gracias por su respuesta. Ya estoy usando el método SAVEDEFAULT. TIMEOUT = 1 ciertamente acorta el tiempo de aparición del menú. El problema tiene que ver con múltiples sistemas operativos. Para probar, modifiqué esa parte del código /etc/grub.d/30_os-probery, aunque no obtuve ningún menú, no pude forzar un menú con shift o esc en el momento del arranque.
heynnema
Esos errores que vinculó no parecen relevantes o me estoy perdiendo algo.
Élder Geek
@ElderGeek con respecto al error n. ° 1401318, la persona a la que se le asigna el error TJ explica el comportamiento del MBR a Grub cuando dice "dormir - $ timeout ininterrumpible", etc. Si lees todas sus declaraciones en los comentarios del error, creo Verás cuál es al menos parte del problema. También está asignado al error # 425979, que es similar en los problemas. Ambos errores tratan de mantener presionada la tecla Mayús para que el menú Grub NO funcione cuando está configurado para estar oculto. Esto es lo que el OP también está tratando de resolver. Espero que esto aclare por qué los enlaces están en mi respuesta publicada.
xtrchessreal
Perdón por mi confusión. Leí la pregunta como "cómo puedo ocultar mi menú de GRUB" Gracias por aclarar. Debo haber perdido ese comentario.
Élder Geek
@ElderGeek en realidad, la pregunta es, "¿cómo puedo ocultar mi menú GRUB Y hacer que las teclas shift o esc muestren el menú GRUB oculto en el momento del arranque". Lo tengo que esconder. No he conseguido que las teclas shift o esc funcionen. Aparentemente, este problema se remonta a 2013 o antes, y solo afecta a configuraciones de arranque múltiple.
heynnema
3
  1. Supongo que quieres probar 'todo' disponible a través de /etc/default/grub. ¿Leíste este enlace?

    help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2

  2. Le sugiero que intente eliminar las siguientes líneas de /boot/grub/grub.cfg,

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    

    Sí, lo sé, tendrías que hacerlo cada vez que update-grubse ejecuta, pero puedes hacer un script para ello.

sudodus
fuente
Gracias por su respuesta. Echaré un vistazo a ese enlace. También encontré una forma de modificar /etc/grub.d/30_os-prober para no tener que editar grub.cfg cada vez.
heynnema
Esto tiene sentido para mí, ya que en un sistema de arranque múltiple parece que este código cambia el tiempo de espera a 10 de 0, lo que parece derrotar HIDDEN_TIMEOUT ...
Elder Geek
@heynnema, ¿podría publicar sus cambios en os-prober? Cuando miré el enlace en su pregunta y lo comparé con el código en mi os-prober, los números de línea no tenían sentido, así que supongo que os-prober ha cambiado desde entonces, y tenía miedo de meterme con él.
Mármol orgánico
1
@OrganicMarble ver la actualización de mi pregunta. Tal vez puedas probar algunos / todos mis mods y ver qué se te ocurre.
heynnema
@sudodus por favor vea mi respuesta
heynnema