Rocky Linux Configurar Grub

Rocky Linux Configurar Grub

En la entrada Rocky Linux Configurar Grub exploraremos todas las opciones para configurar el grub del sistema operativo Rocky Linux. Después de investigar bastante sobre este sistema hemos podido ver que hay poca información al respecto. Debido a este motivo, en este post explicaremos de manera detallada todos los elementos que podemos configurar en el grub de Rocky Linux.

El objetivo de esta entrada:

  • Las diferentes etapas del proceso de arranque;
  • Cómo Rocky Linux soporta este arranque a través de GRUB2 y systemd
  • Cómo proteger GRUB2 de un ataque
  • Cómo gestionar los servicios
  • Cómo acceder a los logs desde journald.

Rocky Linux Configurar Grub – El proceso de arranque

Es importante entender el proceso de arranque de Linux para poder resolver los problemas que puedan surgir. El proceso de arranque incluye:

El inicio de la BIOS (startup)

La BIOS (Basic Input/Output System) realiza el POST (power on self test) para detectar, probar e inicializar los componentes de hardware del sistema.

A continuación, carga el MBR (Master Boot Record).

El registro de arranque maestro (MBR)

El Master Boot Record son los primeros 512 bytes del disco de arranque. El MBR descubre el dispositivo de arranque y carga el gestor de arranque GRUB2 en la memoria y le transfiere el control.

Los siguientes 64 bytes contienen la tabla de particiones del disco.

El gestor de arranque GRUB2

El gestor de arranque por defecto de la distribución Rocky 8 es GRUB2 (GRand Unified Bootloader). GRUB2 sustituye al antiguo gestor de arranque GRUB (también llamado GRUB legacy).

El archivo de configuración de GRUB 2 se encuentra en /boot/grub2/grub.cfg pero este archivo no debe ser editado directamente.

Los ajustes de configuración del menú de GRUB2 se encuentran en /etc/default/grub y se utilizan para generar el archivo grub.cfg.

# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"

Si se realizan cambios en uno o más de estos parámetros, se debe ejecutar el comando grub2-mkconfig para regenerar el archivo /boot/grub2/grub.cfg.

[root] # grub2-mkconfig –o /boot/grub2/grub.cfg

  • GRUB2 busca la imagen comprimida del kernel (el archivo vmlinuz) en el directorio /boot.
  • GRUB2 carga la imagen del kernel en la memoria y extrae el contenido del archivo de imagen initramfs en una carpeta temporal en la memoria utilizando el sistema de archivos tmpfs.

El Kernel en Rocky Linux Configurar Grub

El kernel inicia el proceso systemd con PID 1.

root 1 00:00:02 /usr/lib/systemd/systemd –switched-root –system –deserialize 23

systemd

Systemd es el padre de todos los procesos del sistema. Lee el objetivo del enlace /etc/systemd/system/default.target (por ejemplo, /usr/lib/systemd/system/multi-user.target) para determinar el objetivo por defecto del sistema. El archivo define los servicios que deben iniciarse.

A continuación, Systemd coloca el sistema en el estado definido por el objetivo realizando las siguientes tareas de inicialización:

  1. Establecer el nombre de la máquina
  2. Inicializar la red
  3. Inicializar SELinux
  4. Mostrar el banner de bienvenida
  5. Inicializar el hardware basándose en los argumentos dados al kernel en el momento del arranque
  6. Montar los sistemas de archivos, incluyendo los sistemas de archivos virtuales como /proc
  7. Limpiar los directorios en /var
  8. Iniciar la memoria virtual (swap)

Proteger el gestor de arranque de GRUB2

¿Por qué proteger el cargador de arranque con una contraseña?

  1. Prevenir el acceso al modo de usuario único – Si un atacante puede arrancar en el modo de usuario único, se convierte en el usuario root.
  2. Impedir el acceso a la consola de GRUB – Si un atacante consigue utilizar la consola de GRUB, puede cambiar su configuración o recoger información sobre el sistema utilizando el comando cat.
  3. Evite el acceso a sistemas operativos inseguros. Si hay un arranque dual en el sistema, un atacante puede seleccionar un sistema operativo como DOS en el momento del arranque que ignore los controles de acceso y los permisos de los archivos.

Para proteger con contraseña el gestor de arranque de GRUB2:

  • Elimine -unrestricted de la declaración principal CLASS= en el archivo /etc/grub.d/10_linux.
  • Si aún no se ha configurado un usuario, utilice el comando grub2-setpassword para proporcionar una contraseña para el usuario root:# grub2-setpassword

Se creará un archivo /boot/grub2/user.cfg si no estaba ya presente. Contiene la contraseña cifrada de GRUB2.

Nota: Este comando sólo admite configuraciones con un único usuario root.

[root]# cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.CC6F56....A21

  • Vuelva a crear el archivo de configuración con el comando grub2-mkconfig:
    root]# grub2-mkconfig -o /boot/grub2/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-f9725b0c842348ce9e0bc81968cf7181
    Found initrd image: /boot/initramfs-0-rescue-f9725b0c842348ce9e0bc81968cf7181.img
    done
  • Reinicie el servidor y compruebe.

Todas las entradas definidas en el menú de GRUB ahora requerirán que se introduzca un usuario y una contraseña en cada arranque. El sistema no arrancará un kernel sin la intervención directa del usuario desde la consola.

  • Cuando se solicite el usuario, introduzca root ;
  • Cuando se solicite una contraseña, introduzca la contraseña proporcionada en el comando grub2-setpassword.

Para proteger sólo la edición de las entradas del menú de GRUB y el acceso a la consola, la ejecución del comando grub2-setpassword es suficiente. Puede haber casos en los que tenga buenas razones para hacer sólo eso. Esto podría ser particularmente cierto en un centro de datos remoto donde introducir una contraseña cada vez que se reinicia un servidor es difícil o imposible de hacer.

Systemd – Rocky Linux Configurar Grub

Systemd es un gestor de servicios para los sistemas operativos Linux.

Está desarrollado para:

  • Siguen siendo compatibles con los antiguos scripts de inicialización de SysV,
  • Proporcionan muchas características, como el inicio paralelo de los servicios del sistema en el arranque del mismo, la activación bajo demanda de los daemons, el soporte para las instantáneas o la gestión de las dependencias entre servicios.

Nota: Systemd es el sistema de inicialización por defecto desde RedHat/CentOS 7.

Systemd introduce el concepto de unidades systemd.

Rocky Linux grub

Nota: Hay muchos tipos de unidades: Unidad de dispositivo, unidad de montaje, unidad de ruta, unidad de alcance, unidad de rebanada, unidad de instantánea, unidad de zócalo, unidad de intercambio, unidad de temporizador.

  • Systemd soporta instantáneas del estado del sistema y su restauración.
  • Los puntos de montaje pueden configurarse como objetivos de systemd.
  • Al iniciarse, systemd crea sockets de escucha para todos los servicios del sistema que soportan este tipo de activación y pasa estos sockets a estos servicios tan pronto como se inician. Esto permite reiniciar un servicio sin perder un solo mensaje enviado por la red durante su indisponibilidad. El socket correspondiente sigue siendo accesible y todos los mensajes se ponen en cola.
  • Los servicios del sistema que utilizan D-BUS para sus comunicaciones entre procesos pueden iniciarse bajo demanda la primera vez que son utilizados por un cliente.
  • Systemd detiene o reinicia sólo los servicios en ejecución. Las versiones anteriores (antes de RHEL7) intentaban detener los servicios directamente sin comprobar su estado actual.
  • Los servicios del sistema no heredan ningún contexto (como las variables de entorno HOME y PATH). Cada servicio opera en su propio contexto de ejecución.

Todas las operaciones de las unidades de servicio están sujetas a un tiempo de espera por defecto de 5 minutos para evitar que un servicio que funcione mal congele el sistema.

Managing system services

Las unidades de servicio terminan con la extensión de archivo .service y tienen un propósito similar al de los scripts init. El comando systemctl se utiliza para display, start, stop y restart un servicio del sistema:

comandos rocky linux grub

El comando systemctl también se utiliza para enable o disable un servicio del sistema y mostrar los servicios asociados:

disco de arranque rocky linux

Ejemplos:

systemctl stop nfs-server.service
# or
systemctl stop nfs-server

Para listar todas las unidades cargadas actualmente:

systemctl list-units --type service

Para listar todas las unidades para comprobar si están activadas:

systemctl list-unit-files --type service
systemctl enable httpd.service
systemctl disable bluetooth.service

Ejemplo de archivo .service para el servicio postfix:

postfix.service Unit File
What follows is the content of the /usr/lib/systemd/system/postfix.service unit file as currently provided by the postfix package:

[Unit]
Description=Postfix Mail Transport Agent
After=syslog.target network.target
Conflicts=sendmail.service exim.service

[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
EnvironmentFile=-/etc/sysconfig/network
ExecStartPre=-/usr/libexec/postfix/aliasesdb
ExecStartPre=-/usr/libexec/postfix/chroot-update
ExecStart=/usr/sbin/postfix start
ExecReload=/usr/sbin/postfix reload
ExecStop=/usr/sbin/postfix stop

[Install]
WantedBy=multi-user.target

Uso de los objetivos del sistema (System Targets)

En Rocky8/RHEL8, el concepto de niveles de ejecución ha sido sustituido por objetivos Systemd.

Los objetivos Systemd están representados por unidades objetivo. Las unidades .target terminan con la extensión de archivo .target y su único propósito es agrupar otras unidades Systemd en una cadena de dependencias.

Por ejemplo, la unidad graphical.target, que se utiliza para iniciar una sesión gráfica, inicia servicios del GNOME DISPLAY MANAGER (gdm.service) o el servicio de cuentas (accounts services) (accounts-daemon.service) y también activa la unidad multi-user.target.

De manera similar, la unidad multi-user.target inicia otros servicios esenciales del sistema, como NetworkManager (NetworkManager.service) o D-Bus (dbus.service) y activa otra unidad target llamada basic.target.

grub linux rocky

The default target

Para determinar qué objetivo se utiliza por defecto (default target):

systemctl get-default

Este comando busca el objetivo del enlace simbólico situado en:

/etc/systemd/system/default.target and displays the result.

$ systemctl get-default
graphical.target

El comando systemctl también puede proporcionar una lista de objetivos disponibles:

systemctl list-units --type target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
bluetooth.target loaded active active Bluetooth
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network.target loaded active active Network
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs.target loaded active active Remote File Systems
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
timers.target loaded active active Timers

Para configurar el sistema para utilizar una default target diferente por defecto:

systemctl set-default name.target
Ejemplo:
# systemctl set-default multi-user.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'

Para cambiar de unidad de destino en la sesión actual:

systemctl isolate name.target

El modo de rescate proporciona un entorno sencillo para reparar el sistema en los casos en los que es imposible realizar un proceso de arranque normal.

En el modo de rescate, el sistema intenta montar todos los sistemas de archivos locales e iniciar varios servicios importantes del sistema, pero no habilita una interfaz de red ni permite que otros usuarios se conecten al sistema al mismo tiempo.

En Rocky 8, el modo de rescate es equivalente al antiguo modo de usuario único (single user mode) y requiere la contraseña de root.

Para cambiar el objetivo actual y entrar en el modo de rescate en la sesión actual:
systemctl rescue

El modo de emergencia (emergency mode) proporciona el entorno más minimalista posible y permite reparar el sistema incluso en situaciones en las que el sistema no puede entrar en el modo de rescate. En el modo de emergencia, el sistema monta el sistema de archivos raíz sólo para lectura. No intentará montar ningún otro sistema de archivos local, no activará ninguna interfaz de red e iniciará algunos servicios esenciales.

Para cambiar el objetivo actual y entrar en modo de emergencia en la sesión actual:

systemctl emergency

Shutdown, suspension and hibernation (Apagado, Suspenso e Hibernación)

El comando systemctl sustituye a una serie de comandos de gestión de energía utilizados en versiones anteriores:

Rocky Linux Configurar Grub

The journald process (El proceso de journald)

Los archivos de registro pueden, además de rsyslogd, ser gestionados por el demonio journald que es un componente de systemd.

El  journald daemon captura los mensajes de Syslog, los mensajes de registro del kernel, los mensajes del disco RAM inicial y del inicio del arranque, así como los mensajes escritos en la salida estándar y en la salida de error estándar de todos los servicios, luego los indexa y los pone a disposición del usuario.

El formato del archivo de registro nativo (native log file), que es un archivo binario estructurado e indexado, mejora las búsquedas y permite un funcionamiento más rápido; también almacena información de metadatos, como marcas de tiempo o ID de usuario.

Varios comandos en Rocky Linux Configurar Grub

journalctl comando

El comando journalctl muestra los archivos de registro.

journalctl
El comando lista todos los archivos de registro generados en el sistema. La estructura de esta salida es similar a la utilizada en /var/log/messages/ pero ofrece algunas mejoras:

  • La prioridad de las entradas se marca visualmente
  • Timestamps (las marcas de tiempo= se convierten a la zona horaria local de su sistema
  • Se muestran todos los datos registrados (logs), incluidos los registros rotativos
  • El comienzo de un inicio se marca con una línea especial.

Uso de la visualización continua (Continous Display) en Rocky Linux Configurar Grub

Con la visualización continua, los mensajes de registro se muestran en tiempo real.

journalctl -f
Este comando devuelve una lista de las diez líneas de registro más recientes. La utilidad journalctl continúa ejecutándose y espera a que se produzcan nuevos cambios para mostrarlos inmediatamente.

Filtering messages (Filtrado de mensajes)

Es posible utilizar diferentes métodos de filtrado para extraer información que se ajuste a diferentes necesidades. Los mensajes de registro se utilizan a menudo para rastrear comportamientos erróneos en el sistema. Para ver las entradas con una prioridad seleccionada o superior:

journalctl -p priority

Debe sustituir la prioridad por una de las siguientes palabras clave (o un número):

  • debug (7),
  • info (6),
  • notice (5),
  • warning (4),
  • err (3),
  • crit (2),
  • alert (1),
  • and emerg (0).

Resumen de la entrada Rocky Linux Configurar Grub

Como puedes ver, en esta entrada tan extensa hemos tratado prácticamente todos los temas relacionados con el disco de arranque y el grub de el sistema operativo Rocky Linux.

Un saludo y hasta la siguiente entrada. No os dejéis de comentar!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

*