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 archivostmpfs
.
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:
- Establecer el nombre de la máquina
- Inicializar la red
- Inicializar SELinux
- Mostrar el banner de bienvenida
- Inicializar el hardware basándose en los argumentos dados al kernel en el momento del arranque
- Montar los sistemas de archivos, incluyendo los sistemas de archivos virtuales como /proc
- Limpiar los directorios en /var
- Iniciar la memoria virtual (swap)
Proteger el gestor de arranque de GRUB2
¿Por qué proteger el cargador de arranque con una contraseña?
- 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.
- 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.
- 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 principalCLASS=
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.
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:
El comando systemctl
también se utiliza para enable
o disable
un servicio del sistema y mostrar los servicios asociados:
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
.
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:
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.
- Puedes decargar el sistema Rocky Linux en la web oficial: Rocky Linux Descargar
- En BootRepair.es te recomendamos la entrada Boot Repair USB . En esta entrada te enseñamos a ponerte la aplicación Boot Repair en un USB.
Un saludo y hasta la siguiente entrada. No os dejéis de comentar!
Deja una respuesta