GRUB2: cómo recordar la última opción de grub

11

Actualmente estoy probando varias distribuciones, así que cuando inicio mi computadora portátil tengo varios SO para elegir. Por lo general, todas esas distribuciones se instalan grub2y se ubican en la parte superior de la lista, por lo que son las predeterminadas para iniciar una vez que se completa la instalación.

Pero Manjaro hizo algo diferente. Instaló alguna versión de grub2eso que recordaría qué distribución arranqué la última vez y seguí arrancando esa (al reiniciar) hasta que seleccioné otra (y luego arrancaría esa y así sucesivamente).

¿Me imaginaba esto? ¿Manjaro realmente hace eso? Si es así, ¿cómo puedo instalar esa versión de grubque mi sistema? Salud.


Este es mi /etc/grub.d/40_customarchivo:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

y este es mi /etc/default/grubarchivo:

# 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=saved
GRUB_SAVEDEFAULT=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
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"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
Gabriel
fuente
Seguí las instrucciones en esa pregunta (principalmente agregué esas dos líneas a mi grub) pero no funcionó. La distribución superior se inicia al reiniciar aunque había elegido otra anteriormente.
Gabriel
Seguí las instrucciones en la respuesta aceptada. He editado /etc/default/gruby cambié la línea GRUB_DEFAULT=0a GRUB_DEFAULT=saved, y añadió la línea de GRUB_SAVEDEFAULT=truelo que wa no existe. Entonces yo sudo update-grub. Reinició y eligió una distribución para arrancar, diferente de la superior. Reinició nuevamente y la distribución superior (no la que había elegido antes) fue elegida por defecto y arrancada.
Gabriel
Actualicé mi pregunta con lo que hay dentro de esos dos archivos. ¿Cuál es el cambio que debo hacer?
Gabriel

Respuestas:

11

Según el manual de GRUB :

'GRUB_DEFAULT'

.................

Si configura esto como 'guardado', la entrada de menú predeterminada será la guardada por 'GRUB_SAVEDEFAULT', grub-set-default o grub-reboot.


'GRUB_SAVEDEFAULT'

Si esta opción está configurada como 'verdadera', entonces, cuando se selecciona una entrada, guárdela como una nueva entrada predeterminada para que la utilicen futuras ejecuciones de GRUB. Esto solo es útil si 'GRUB_DEFAULT = guardado'; es una opción separada porque 'GRUB_DEFAULT = salvado' es útil sin esta opción, junto con grub-set-default o grub-reboot. Desarmado por defecto. Esta opción se basa en el bloque de entorno, que puede no estar disponible en todas las situaciones (ver bloque de entorno).

Debes agregar:

GRUB_DEFAULT=saved

y

GRUB_SAVEDEFAULT=true

a tu /etc/default/grub. Además, si está utilizando archivos de menú personalizados como /etc/grub.d/40_customdebe agregar la opción

savedefault

a la menuentry / menuentries en ese archivo. Después de esa actualización GRUB:

grub-mkconfig -o /boot/grub/grub.cfg

o

update-grub

Si tiene varias distribuciones instaladas, asegúrese de estar configurando y actualizando el GRUB activo .

don_crissti
fuente
1

Estaba teniendo problemas con esto usando Arch como invitado de VirtualBox. El problema resultó ser mi uso de LVM.

Nuevamente, del Manual de GRUB :

13.2 El bloque de entorno GRUB

A menudo es útil poder recordar una pequeña cantidad de información de un arranque a otro. Por ejemplo, es posible que desee establecer la entrada de menú predeterminada en función de lo que se seleccionó la última vez. GRUB deliberadamente no implementa soporte para escribir archivos para minimizar la posibilidad de que el gestor de arranque sea responsable de la corrupción del sistema de archivos, por lo que un archivo de configuración de GRUB no puede simplemente crear un archivo de la manera ordinaria. Sin embargo, GRUB proporciona un "bloque de entorno" que puede usarse para guardar una pequeña cantidad de estado.

El bloque de entorno es un archivo de 1024 bytes preasignado, que normalmente vive en / boot / grub / grubenv (aunque no debe suponer esto). En el momento del arranque, el comando load_env (ver load_env) carga las variables de entorno, y el comando save_env (ver save_env) guarda las variables de entorno. Desde un sistema en ejecución, la utilidad grub-editenv se puede usar para editar el bloque de entorno.

Por razones de seguridad, este almacenamiento solo está disponible cuando se instala en un disco plano (sin LVM o RAID) , utilizando un sistema de archivos sin suma de comprobación (sin ZFS) y utilizando las funciones BIOS o EFI (sin ATA, USB o IEEE1275).

grub-mkconfig utiliza esta función para implementar 'GRUB_SAVEDEFAULT' (ver Configuración simple).

Matteus Blanc
fuente