Establecer el kernel "anterior" como entrada predeterminada de grub

94

Instalé un núcleo principal para fines de prueba. Me gustaría configurar grub para que arranque desde el kernel anterior de forma predeterminada.

Sé que puedo establecer la GRUB_DEFAULT=0configuración para la primera página de grub, pero ¿cómo configuro que arranque de forma predeterminada desde un kernel en la segunda página (página avanzada)?

Preferiría hacer esto sin instalar otro software (por ejemplo, grub-customizer).

Preguntas relacionadas:
¿Cómo configuro Windows para que arranque como predeterminado en el cargador de arranque?
¿Cómo cambio el orden de arranque de grub?

Que hacer
fuente
3
@belacqua: no es un duplicado. Esta pregunta se trata de configurar un kernel más antiguo que no está presente en la primera página de opciones de grub como predeterminado.
Para hacer el
Parece que este caso debería tratarse en las preguntas anteriores, incluso si el método necesita actualizarse para 12.10, núcleos más antiguos, etc.
belacqua
3
El caso de uso de la pregunta es diferente, y la respuesta es muy específica de una manera que no se aplica a los otros duplicados reclamados. Vine aquí para resolver este problema en particular; no cambiar el orden de arranque; ni para arrancar Windows. +1 para "no es un duplicado".
Robie Basak

Respuestas:

128

Primero, haga una copia de seguridad de /etc/default/grub. Si algo sale mal, puede volver fácilmente a la copia válida conocida.

sudo cp /etc/default/grub /etc/default/grub.bak

Luego edite el archivo usando el editor de texto de su elección (por ejemplo, gedit, etc.).

sudo -H gedit /etc/default/grub

Encuentre la línea que contiene GRUB_DEFAULT: esto es lo que querrá editar para establecer el valor predeterminado. Debe conocer el nombre completo del núcleo que desea, por ejemplo Ubuntu, with Linux 3.13.0-53-generic, junto con el nombre completo del "menú avanzado", por ejemplo Advanced options for Ubuntu.

Luego combina esas dos cadenas >y las configura GRUB_DEFAULTcomo: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(incluidas las comillas).

Guárdelo, luego cree el menú grub actualizado.

sudo update-grub

Consulte también: GNU GRUB Manual 2.02 o más específicamente la sección 15.1.0 sobre la configuración predeterminada .


Nota: Existe un método que utiliza números para acceder a los núcleos y los menús, pero esto no se recomienda ya que no es confiable cuando se producen actualizaciones del núcleo.

DaimyoKirby
fuente
24
El uso de un valor numérico puede ser problemático cuando se producen actualizaciones. Es mejor usar un texto predeterminado, es decir: GRUB_DEFAULT = "Versiones anteriores de Linux> Ubuntu, con Linux 3.2.0-18-generic"
Bealer
27
Uno puede usar sudo grub-mkconfig | lesspara ver todas las opciones posibles
Nitz
99
Esta es una buena solución, pero aún mejor es abrir una /boot/grub/grub.cfgy allí verá todo manuentryy todo el submenus. Si los edita, puede configurar fácilmente los predeterminados, incluso cambiar los títulos de las opciones en la lista de grub al reiniciar una computadora.
Aleks
77
Definitivamente es útil examinar /boot/grub/grub.cfgpara determinar los nombres exactos a utilizar. Pero no cambie este archivo, ya que se regenerará automáticamente update-grub, incluso al actualizar paquetes.
Robie Basak
18
El formato para GRUB_DEFAULT está un poco desactualizado (ya que al menos Ubuntu 14.04.2). En ejecución, update-grubencontré una advertencia: no use el título anterior Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericpara GRUB_DEFAULT, use Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(para versiones anteriores a 2.00) o gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(para 2.00 o posterior)
Wumms
22

La mejor solución para mí fue establecer (in /etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Con esta configuración, el último valor seleccionado se mantiene para el próximo arranque. Si tiene un nuevo núcleo, no tiene que editar su configuración.

No olvides volver a correr sudo update-grub

La solución es de la lectura: info grub-mkconfig

Martin T.
fuente
44
Esto es increíble
Mephisto el
¿estás seguro del punto y coma ( ;) al final de las líneas?!?
DJCrashdummy
No puedo mirar mi computadora donde la usé en este momento, pero tienes razón ";" parece estar equivocado o innecesario!
Martin T.
21

Ahora que un Advancedmenú está predeterminado en Ubuntu, deberá seleccionarlo antes del núcleo que desea usar con el >carácter.

Establecer, por ejemplo:

GRUB_DEFAULT="1>7"

adentro /etc/default/gruby volver a correr sudo update-grub.

Es importante tener en cuenta que para el menú GRUB, la numeración de las entradas comienza con 0. Por lo tanto, lo 1anterior apunta al Advancedmenú. Como precaución, es posible que desee configurar inicialmente GRUB_TIMEOUT=5. Es posible que algunos no puedan acceder a GRUB presionando una tecla en el momento del arranque. Esta es una red de seguridad en caso de que accidentalmente apuntes a algo así Memory test. También es necesario incluir los números anteriores entre comillas. No funcionará de otra manera.

Probé en 16.04 LTS.

sarnold
fuente
Funciona también en Debian.
Lawrence D'Oliveiro
Encuentro esta respuesta muy útil, ya que después de una actualización del kernel todavía apunta al kernel más nuevo. en mi configuración, por ejemplo, es 1> 0, lo que significa: primer listado avanzado (siempre es el kernel más nuevo). mi sistema se detuvo en algún momento para actualizar automáticamente la entrada 0 de grub con el kernel más nuevo, así que uso este método.
Peter Fleix
9

Para poder establecer qué opción de arranque usar por defecto, necesita saber qué hay ... entonces:

Para mostrar las entradas del menú sin arrancar , intente algo como:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
xenial

$ update-grub --version
grub-mkconfig (GRUB) 2.02 ~ beta2-36ubuntu3.17

$ grep -Ei 'submenú | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
menuentry Ubuntu
submenú Opciones avanzadas para Ubuntu
    Menuentry Ubuntu, con Linux 4.4.0-34-generic
    Menuentry Ubuntu, con Linux 4.4.0-34-generic (upstart)
    Menuentry Ubuntu, con Linux 4.4.0-34-generic (modo de recuperación)
Configuración del sistema de menuentry

Hannu
fuente