sábado, 18 de junio de 2022

grub - cambiar el sistema operativo por defecto

GRUB (GNU GRand Unified Bootloader) es un cargador de arranque múltiple, desarrollado por el proyecto GNU, que permite elegir el Sistema Operativo que vamos a arrancar de entre todos los sistemas operativos instalados en este pc. Aunque realmente lo que hacemos es seleccionar el kernel que queremos usar.

Kernel o núcleo es un programa fundamental del sistema operativo. Es el principal responsable de facilitar el acceso de los programas al hardware del pc. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá usar un dispositivo hardware y durante cuánto tiempo. (algunos ejemplos de hardware: impresora, escaner, tarjeta sonido, tarjeta de red, puertos usb, etc...)

Conforme añadimos nuevos kernel al sistema operativo, GRUB añade sus respectivas entradas (la entrada por defecto llamada: Debian GNU/Linux y la entrada de recuperación por defecto del sistema operativo: recovery mode) en el menú del GRUB. Con el tiempo, la pantalla principal del menú del GRUB crecía y podía contener muchas entradas de kernel que el usuario ya no seleccionaba regularmente, ya que en condiciones normales, el usuario selecciona el ultimo kernel que a instalado, y la visualización se volvía difícil de ver a simple vista.

Entonces los desarrolladores cambiaron la estructura, creando submenús, para que la visualización de la pantalla principal sea mas limpia, corta, rápida y fácil de usar.

En el submenú solo se añade, como primera opción el modo de recuperación del ultimo kernel instalado (llamada: recovery mode), mas los kernel mas antiguo que ya teníamos instalados junto a sus entradas de recuperación del sistema operativo (llamada: recovery mode). Y si tenemos mas de un sistema operativo GNU/Linux instalado, se crea un menú diferente por cada sistema operativo GNU/Linux instalado.

A partir de la versión 1.99 de GRUB, se añadió submenús. El nombre del submenú predeterminado es: Advanced options for Debian GNU/Linux y aparece como la segunda opción predeterminada del menú del gestor de arranque GRUB. Y si tenemos otros sistemas operativos GNU/Linux instalado, nos crea otro submenú aparte llamado: Advanced options for Debian GNU/Linux mas el numero de la versión, mas el nombre de la versión, mas la unidad en la que se encuentra instalada: (on /dev/sdXX)

================================================
NOTA MUY IMPORTANTE: para las entradas de los sistemas operativos Windows, NO se crea submenús.
================================================

Ejemplo de GRUB2 con dos submenús, y con una entrada de Windows



En la imagen de arriba se ven los dos submenús, llamados:

- Advanced options for Debian GNU/Linux
- Advanced options for Debian GNU/Linux 11 (bullseye) (on /dev/sda1)

y las entradas llamadas:

- Debian GNU/Linux
- Debian GNU/Linux 11 (bullseye) (on /dev/sda1)
- Windows 10 (on /dev/sdc1)



Seleccionar otro kernel

En algún momento, nos interesa arrancar con un kernel mas antiguo, (no importa el motivo), entonces tenemos que seleccionar en el grub el kernel que nos interesa. Para ello utilizamos las teclas de los cursores: Subir y Bajar, y pulsamos Intro para cargar dicho kernel


Submenú en GRUB

El menú de GRUB2 por defecto solo incorpora el kernel de instalación y el submenú del modo re recuperación (recovery mode) del kernel instalado, y no cambiará hasta que haya más de un kernel instalado, o mas sistemas operativos instalados para seleccionar.

El kernel más reciente se muestra en el menú principal. Y el modo recuperación del kernel actual, más los antiguos kernel se muestran en el submenú

- Para acceder a la opción de recuperación y a los kernel antiguos, usamos la teclas de los cursores (subir y bajar) y una vez seleccionado pulsamos la tecla ENTER.

- Una vez que se selecciona el submenú, nos aparece los kernel antiguos en dicho submenú.








Proceso de instalación de un nuevo kernel

Cuando se instala un nuevo kernel, el proceso que realiza automáticamente es el siguiente:

- El grub actualiza automáticamente, las entradas y los submenús
- El kernel por defecto, esta siempre seleccionado,
- El nuevo kernel se añade en el menú principal de grub.
- El modo recuperación del sistema (recovery mode) se añade en el submenú: Advanced options for Debian GNU/Linux
- el submenú: Advanced options for Debian GNU/Linux, es creado automaticamente por el grub
- Los kernel mas antiguos del submenú se colocan los ultimos en la lista del submenú, apareciendo los mas recientes arriba de la lista.





Cambiar kernel por defecto

Para configurar manualmente un kernel específico para que arranque, el administrador tiene que editar el archivo /etc/default/grub 

# nano /etc/default/grub

Buscamos la línea:

GRUB_DEFAULT = "0"


Grub enumera las entradas del menú y del submenú, empezando de arriba hacía abajo, comenzando por el numero 0 (Aunque la numeración no se muestra en el menú del grub. En este manual aparece los números para una mejor comprensión. los números de color verde indican que son submenús, y los números azules indican que son las entradas del submenú)

El grub por defecto, muestra el menú principal, y la línea seleccionada por defecto es: 0 La entrada seleccionada por defecto en el menú del grub, es aquella que aparece precedida con el símbolo: *

OBSERVACION: Solo puede haber una línea por defecto, o bien en el menú o en el submenú. En las imágenes de abajo se ven dos lineas por defecto una en el menú principal o otra en el submenú, pero solo es para que se vea y comprenda que se puede indicar en ambos sitios





El grub por defecto, muestra el menú principal, y la línea seleccionada por defecto es: 0 

GRUB_DEFAULT = "0"

Las entradas que se muestran en el menú principal se pueden designar por números (0,1,2,3,4....) o título (Debian GNU/Linux).

La primera entrada en el menú principal es 0, la segunda entrada es 1, y asín sucesivamente.

La entrada por defecto debe estar encerrada por un solo conjunto de comillas dobles " ".

GRUB_DEFAULT = "3"

GRUB_DEFAULT = "Debian GNU/Linux"

El submenú también se cuenta como una entrada.

Por último actualizamos el grub usando el siguiente comando:

# update-grub



Podemos seleccionar por defecto, una entrada de un submenú

1- Para seleccionar por defecto una entrada del submenú el proceso es el mismo que hemos realizado hasta ahora. Indicando el numero o el nombre de línea.

2- Ahora le añadimos el símbolo: > (después del numero o el nombre de la línea)

3- Añadimos el segundo número o nombre de la línea del submenú
La entrada por defecto debe estar encerrada por un solo conjunto de comillas dobles " ".

Ejemplos de como se puede configurar:

GRUB_DEFAULT = "1>0"

GRUB_DEFAULT = "Advanced options for Debian GNU/Linux>0"

GRUB_DEFAULT = "Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 5.17.0-1-amd64"

GRUB_DEFAULT = "1>Debian GNU/Linux, with Linux 5.17.0-1-amd64"



Por último actualizamos el grub usando el siguiente comando:

# update-grub




Arranque del kernel a por un error en la configuración

Si GRUB no puede encontrar el kernel para arrancar debido a una configuración incorrecta o erronea de GRUB_DEFAULT = " " en /etc/default/grub, GRUB intentará arrancar la primera entrada del menú principal, es decir el ultimo kernel instalado, que es la que corresponde con la configuración oficial de grub.


Actualización automatiza

La configuración GRUB_DEFAULT en el archivo /etc/default/grub solo cambia automáticamente, cuando el sistema actualiza o instala un nuevo kernel. Y hace que el sistema inicie la entrada del menú por defecto 0, que puede ser la no esperada por el usuario.











No hay comentarios: