Registros de Ubuntu: Verificar y configurar archivos de logs
Consejos para los Secretos en Docker

Guía de configuración básica de GRUB

Guía de configuración básica de GRUB

Requisitos previos

Si deseas seguir este tutorial, asegúrate de tener un dispositivo Linux que utilice GRUB como gestor de arranque. Este tutorial se basa en Ubuntu 18.04.5 LTS, ejecutándose en una máquina virtual en VirtualBox.

Preparación de entorno de pruebas local

Entendiendo el Proceso de Arranque de Ubuntu GRUB

GRUB es un acrónimo de GRand Unified BootLoader y es el gestor de arranque más predominante para Linux. Vamos a poner un poco de luz en la oscuridad sobre el proceso de arranque de GRUB.

En el proceso de arranque general, la BIOS comienza invocando el paso POST y luego busca el gestor de arranque en el Registro de Arranque Maestro (MBR).

El MBR es la información en el primer sector de cualquier disco duro. El MBR identifica dónde se encuentra un Sistema Operativo. La información almacenada en el MBR carga (inicia) el SO en la RAM del dispositivo.

(Este artículo solo cubre el lado del MBR. Pero también puedes encontrar discos que usen GPT, que significa Tablas de Partición GUID. GPT es mejor si planeas crear más de cuatro particiones, ya que un disco MBR puede contener un máximo de 4 particiones primarias como máximo.)

A continuación, puedes ver un diagrama del proceso de arranque. Puedes ver que Ubuntu GRUB carga el kernel que seleccionaste en la memoria principal: la Memoria de Acceso Aleatorio (RAM). Después de cargar el kernel, los usuarios pueden iniciar sesión en el dispositivo.

Diagrama del proceso de arranque de GRUB

Comparando los Gestores de Arranque Ubuntu GRUB y LILO

El mundo Linux tiene tres principales gestores de arranque: LILO, GRUB y GRUB2. GRUB2 es el gestor de arranque más reciente y principal en las distribuciones Linux. GRUB2 es el más usado y es el que se usa en esta guía, ya que es el gestor de arranque predeterminado de Ubuntu, pero LILO todavía tiene presencia en Linux. En esta sección, aprenderás cómo se comparan entre sí.

Otros gestores de arranque Linux están disponibles en el mercado, como GNU GRUB, que tiene un buen soporte para la gestión de memoria y un marco orientado a objetos. Otro es SYSLINUX, que es un gestor de arranque liviano.

GRUB admite el arranque de múltiples sistemas operativos. LILO, por otro lado, solo puede arrancar un SO.

Comparación entre GRUB y LILO

Ubuntu GRUB funciona con Windows, Linux, Unix, macOS, BSD, Solaris, mientras que LILO admite principalmente sistemas operativos Linux.

Si actualizas el archivo de configuración en LILO, necesitarás reinstalar LILO en el MBR. Si cambias la configuración de GRUB, no requiere reinstalación.

Seleccionando Diferentes Kernels o Modos de Recuperación

Vamos a empezar viendo cómo seleccionar un kernel al arrancar el dispositivo, por ejemplo, para recuperar el SO por un kernel corrupto.

De manera muy resumiada, un kernel funciona como una interfaz entre el hardware y el software. Controla todos los procesos que los usuarios ejecutan en el dispositivo.

A continuación, se presentan los pasos para seleccionar un kernel. Como dije, he iniciado sesión directamente en la consola del dispositivo Ubuntu usando VirtualBox.

Para empezar, reinicia la máquina Ubuntu, por ejemplo, usando el comando de apagado como se muestra a continuación.

shutdown -r now

Una vez que tu dispositivo se reinicie, mantén presionada la tecla Shift mientras se carga Ubuntu GRUB, y verás el menú del gestor de arranque GRUB. Si no seleccionas nada, GRUB arrancará el sistema con el kernel predeterminado y procederá con el proceso de arranque.

Debes seleccionar Advanced options for Ubuntu cuando necesites arrancar con un kernel diferente al kernel predeterminado o si enfrentas algún problema dentro del sistema, como corrupción de archivos o el kernel no cargando correctamente.

Opciones avanzadas de Ubuntu en GRUB

Después de seleccionar las Advanced options for Ubuntu, aparecerá un menú de Ubuntu GRUB. En el menú, deberías ver varias opciones de kernels para elegir. Si no seleccionas una opción, el primer kernel mostrado se cargará por defecto.

Como puedes ver en la imagen a continuación, hay dos opciones adicionales para cada kernel: upstart y recovery.

  • (upstart): un reemplazo basado en eventos para el demonio /sbin/init, que maneja la iniciación de tareas y servicios durante el arranque, deteniéndolos durante el apagado y supervisándolos mientras el sistema está en funcionamiento.
  • (recovery mode): para recuperar el kernel de cualquier falla en el sistema.

Opciones de kernel en GRUB

Una vez que inicies sesión en el dispositivo, el comando uname verifica si el kernel especificado está cargado. La opción -r imprime el nombre del kernel.

uname -r 

Comando uname -r mostrando el kernel

Configurar las opciones del cargador de arranque GRUB2 en Ubuntu

Podemos configurar las opciones del cargador de arranque desde la línea de comandos o mediante la GUI.

Primero, veamos la forma de hacerlo desde la línea de comandos.

Advertencia: El archivo de configuración predeterminado de GRUB2 es /boot/grub/grub.cfg. No debes editar ni modificar este archivo, a menos que estés muy familiarizado con GRUB2. Este es el archivo principal para iniciar en el sistema operativo Linux. Cualquier error en este archivo podría hacer que tu sistema Ubuntu quede inutilizable. ¡Así que no toques este archivo!

El archivo /boot/grub/grub.cfg se genera automáticamente mediante grub-mkconfig utilizando plantillas de /etc/grub.d y configuraciones de /etc/default/grub.

Cualquier cambio que realices en el archivo /etc/default/grub se reflejará en GRUB2.

Antes de realizar cualquier cambio, haz una copia de seguridad del archivo /etc/default/grub. (Siempre te puede bailar un caracter y liarla, haz la copia)

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

El contenido de un archivo GRUB típico se verá como a continuación.

cat /etc/default/grub

Salida de ejemplo:

# Si cambias este archivo, ejecuta 'update-grub' después para actualizar
# /boot/grub/grub.cfg.
# Para la documentación completa de las opciones en este archivo, consulta:
# info -f grub -n 'Simple configuration'

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=""

# Descomentar para habilitar el filtrado de BadRAM, modificar según sea necesario
# Esto funciona con Linux (no se requiere parche) y con cualquier kernel que obtenga
# la información del mapa de memoria de GRUB (GNU Mach, kernel de FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Descomentar para deshabilitar el terminal gráfico (solo grub-pc)
#GRUB_TERMINAL=console

# La resolución utilizada en el terminal gráfico
# ten en cuenta que solo puedes usar modos que tu tarjeta gráfica soporte a través de VBE
# puedes verlos en el GRUB real con el comando `vbeinfo'
#GRUB_GFXMODE=640x480

# Descomentar si no deseas que GRUB pase el parámetro "root=UUID=xxx" a Linux
#GRUB_DISABLE_LINUX_UUID=true

# Descomentar para deshabilitar la generación de entradas de menú de modo de recuperación
#GRUB_DISABLE_RECOVERY="true"

# Descomentar para obtener un pitido al iniciar grub
#GRUB_INIT_TUNE="480 440 1"

Siempre que realices algún cambio en este archivo, debes ejecutar el siguiente comando para aplicar los cambios a GRUB2.

sudo update-grub

Hagamos algunos ajustes en el cargador de arranque GRUB2.

Seleccionar el sistema operativo predeterminado (GRUB_DEFAULT)

A continuación, enumera las entradas del menú de arranque de GRUB ejecutando el comando awk como se muestra a continuación.

Guía del comando awk

El comando awk mostrará todas las entradas almacenadas en /boot/grub/grub.cfg. El contenido del archivo aparecerá en la terminal. Presta atención a las líneas. Necesitarás el número asociado con la línea principal, que comienza con cero, es decir, la línea Ubuntu es 0 y Ubuntu, with Linux 4.4.0-210-generic es 1.

awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg

Salidas de awk mostrando las entradas del menú de GRUB

Abre el archivo /etc/default/grub usando cualquier editor de texto, por ejemplo, nano.

sudo nano /etc/default/grub

Encuentra la línea GRUB_DEFAULT. Podemos seleccionar el sistema operativo predeterminado para arrancar utilizando esta opción. Si estableces el valor en 0, se iniciará el primer sistema operativo en la entrada del menú de arranque de GRUB. Si lo estableces en 1, se iniciará el segundo sistema operativo, y así sucesivamente.

Además, si tienes más de un sistema operativo en tu sistema, puedes iniciar el último sistema operativo utilizando el valor GRUB_DEFAULT=saved. Cada vez que reinicies el sistema, se iniciará el último sistema operativo. Ten en cuenta que debes agregar una línea GRUB_SAVEDEFAULT=true para que este truco funcione.

También puedes especificar el nombre de la entrada del sistema operativo para iniciar un sistema operativo en particular. Por ejemplo, si hay una entrada llamada «Lubuntu 16.04 LTS» en el menú de arranque, puedes usar GRUB_DEFAULT="Lubuntu 16.04 LTS" para iniciar Lubuntu por defecto. Ten en cuenta que debes especificar el valor entre comillas.

No olvides actualizar los cambios realizados en el archivo grub ejecutando el siguiente comando:

sudo update-grub

Establecer el tiempo de espera del sistema operativo (GRUB_TIMEOUT)

Por defecto, la entrada seleccionada en el menú de arranque comenzará a arrancar en 10 segundos.

Puedes aumentar o disminuir esta configuración de tiempo de espera. Si el valor es 0, el sistema operativo predeterminado comenzará a arrancar de inmediato. Si el valor es 5, el menú de arranque aparecerá durante 5 segundos para que puedas seleccionar qué sistema operativo deseas cargar cuando se inicie el sistema.

Cambiar la imagen de fondo de GRUB

Para cambiar la imagen de fondo de GRUB, necesitas copiar tu imagen preferida a la ubicación /boot/grub/.

sudo cp ostechnix.png /boot/grub/

Puedes usar imágenes en formato JPG/JPEG también. Pero GRUB solo soporta formatos de imagen JPG/JPEG de 256 colores. Por lo tanto, es mejor usar imágenes en formato PNG.

Alternativamente, puedes mencionar directamente la ruta del archivo de imagen en el archivo /etc/default/grub como a continuación.

sudo nano /etc/default/grub

Agrega la siguiente línea:

GRUB_BACKGROUND="/home/sk/ostechnix.png"

Reemplaza la ruta de la imagen con la tuya propia.

Una vez que hayas realizado los cambios necesarios en el archivo GRUB, guárdalo y ciérralo.

Para aplicar los cambios, debes ejecutar el siguiente comando:

sudo update-grub

Deberías ver la siguiente salida:

Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found background image: ostechnix.png
Found linux image: /boot/vmlinuz-4.15.0-23-generic
Found initrd image: /boot/initrd.img-4.15.0-23-generic
Found linux image: /boot/vmlinuz-4.15.0-20-generic
Found initrd image: /boot/initrd.img-4.15.0-20-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
done

Reinicia y verifica si los cambios están funcionando o no.

Dual-boot con GRUB

Una de las mejores características de Ubuntu GRUB es que te permite elegir entre Windows y Linux cuando tu dispositivo arranca: también conocido como arranque dual. El arranque dual te permite usar Linux y Windows juntos en un dispositivo y facilita la vida de los ingenieros de TI que trabajan en múltiples SO.

A principios de 2021, el script predeterminado os_prober, que añade automáticamente entradas de menú de sistemas operativos adicionales, fue deshabilitado debido a posibles preocupaciones de seguridad con la detección automática de SO. Puedes reactivar esta funcionalidad mediante el siguiente comando, siempre que seas consciente de qué sistemas operativos están instalados.

echo GRUB_DISABLE_OS_PROBER=false|sudo tee -a /etc/default/grub && sudo update-grub

Una vez que hayas configurado el arranque dual en tu dispositivo, deberías ver una pantalla similar al menú de GRUB cuando tu máquina arranca.

Menú de GRUB para arranque dual

Configurar las opciones del cargador de arranque GRUB2 usando Grub-customizer

Algunos de ustedes pueden no sentirse cómodos con la línea de comandos. Si eres uno de ellos, puedes usar una herramienta gráfica llamada Grub-customizer para configurar Grub2 y los cargadores de arranque Burg.

Usando Grub-customizer, podemos:

  • Editar, eliminar, renombrar y reorganizar las entradas del menú de arranque,
  • Ocultar o mostrar el menú de arranque,
  • Cambiar la entrada de arranque predeterminada,
  • Cambiar el color del texto de las entradas del menú de arranque,
  • Cambiar la imagen de fondo del menú de arranque,
  • Aumentar o disminuir el tiempo de arranque,
  • Editar parámetros del kernel,
  • Reinstalar Grub en el MBR de Windows.

Grub-customizer tiene un PPA oficial para Ubuntu y sus derivados, como Linux Mint. Puedes agregarlo e instalar Grub-customizer ejecutando los siguientes comandos uno por uno:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer

sudo apt update

sudo apt install grub-customizer

Una vez instalado, inícialo desde Dash o el Menú. Así es como se ve la interfaz predeterminada de Grub-customizer.

Como puedes ver en la captura de pantalla anterior, Grub-customizer tiene las siguientes tres pestañas:

  • Configuración de la lista,
  • Configuración general,
  • Configuración de apariencia.

En Configuración de la lista, puedes editar, eliminar, renombrar y reorganizar (mover) las entradas del menú de arranque. Por ejemplo, para renombrar una entrada de menú, simplemente haz clic derecho sobre ella, elige Renombrar e ingresa el nombre de tu elección.

De manera similar, para mover una entrada, selecciónala, haz clic derecho y luego haz clic en Mover hacia arriba o Mover hacia abajo. También puedes usar las flechas de arriba/abajo en la barra de menú para mover las entradas.

Después de realizar los cambios, haz clic en el botón Guardar en la barra de menú.

En la sección Configuración general, podemos:

  • Cambiar la entrada de arranque predeterminada (puede ser útil cuando se realiza un arranque dual),
  • Arrancar en la última entrada arrancada, es decir, arrancar el último sistema operativo,
  • Mostrar/ocultar la visibilidad del menú de arranque,
  • Cambiar el tiempo de espera del menú de arranque,
  • Cambiar los parámetros del kernel.

En la configuración de apariencia, podemos:

  • Cambiar la fuente para las entradas del menú de arranque,
  • Establecer el color de la fuente,
  • Establecer la imagen de fondo, y más.

No olvides presionar el botón Guardar después de realizar cualquier cambio.

También hay una sección adicional llamada Configuración avanzada en la parte inferior derecha de la interfaz de Grub-customizer. En la sección de configuración avanzada, puedes agregar, eliminar, habilitar/deshabilitar y editar rápidamente los valores de varias configuraciones del cargador de arranque, como GRUB_DEFAULT, GRUB_TIMEOUT, GRUB_MENU_PICTURE y algunas más.

Nuevamente, te advierto: no edites ni modifiques la configuración de GRUB2 en sistemas de producción. Te recomiendo que pruebes estas configuraciones en cualquier máquina virtual y luego las apliques en tu escritorio personal.

Más apuntes

Invítame a un café con bitcoins:
1QESjZDPxWtZ9sj3v5tvgfFn3ks13AxWVZ

Bitcoins para café
También puedes invitarme a algo para mojar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar