GNU/Linux >> Tutoriales Linux >  >> Cent OS

CentOS / RHEL 7:proceso de arranque

Es importante comprender el proceso de arranque de Linux para solucionar problemas de arranque. Estos son los pasos de alto nivel en el proceso de arranque. Debe tener en cuenta los archivos involucrados en el proceso de inicio porque los errores en estos archivos pueden causar problemas de inicio.

Si hay un problema durante el arranque, debe identificar en qué fase del proceso de arranque se encuentra el problema para que pueda tomar las medidas adecuadas para solucionarlo.

Introducción de systemd

sistema es el nuevo sistema y administrador de servicios en CentOS/RHEL 7. Es compatible con las secuencias de comandos SysV init utilizadas por versiones anteriores de RedHat Linux, incluido RHEL 6. Reemplaza a Upstart como el sistema de inicialización predeterminado.

Los siguientes pasos resumen cómo ocurre el procedimiento de arranque en RHEL/CentOS 7.

  1. El BIOS de la computadora realiza POST.
  2. BIOS lee el MBR para el gestor de arranque.
  3. El cargador de arranque GRUB 2 carga la imagen del kernel vmlinuz.
  4. GRUB 2 extrae el contenido de la imagen initramfs.
  5. El núcleo carga módulos de controlador desde initramfs.
  6. Kernel inicia el primer proceso del sistema, systemd.
  7. El proceso systemd toma el control. Es:
    • Lee archivos de configuración del directorio /etc/systemd
    • Lee el archivo enlazado por /etc/systemd/system/default.target
    • Lleva el sistema al estado definido por el objetivo del sistema
    • Ejecuta /etc/rc.local

1. POST (autoprueba de encendido)

Desde el firmware del sistema, que puede ser la interfaz de firmware extendida universal moderna (UEFI ) o el clásico Sistema básico de entrada y salida (BIOS ), se ejecuta la autoprueba de encendido (POST) y se inicializa el hardware necesario para iniciar el sistema.

2. Seleccionando el dispositivo de arranque (Con MBR)

– Master Boot Record (MBR) son los primeros 512 bytes de la unidad de arranque que el BIOS lee en la memoria.
– Los siguientes 64 bytes contienen la tabla de particiones del disco. Los últimos dos bytes son el "Número mágico" que se utiliza para la detección de errores.

– MBR descubre el dispositivo de arranque y carga el cargador de arranque GRUB2 en la memoria y le transfiere el control.

3. Cargando el gestor de arranque (GRUB2)

– El programa de cargador de arranque predeterminado que se usa en RHEL 7 es GRUB 2. GRUB significa GRand Unified Bootloader . GRUB 2 reemplaza al gestor de arranque GRUB más antiguo, también llamado GRUB heredado.
– El archivo de configuración de GRUB 2 se encuentra en /boot/grub2/grub.cfg (no edite este archivo directamente).

– Los ajustes de configuración del menú de GRUB 2 se toman de /etc/default/grub cuando se genera grub.cfg.
– Ejemplo de archivo /etc/default/grub:

# 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 cualquiera de estos parámetros, debe ejecutar grub2-mkconfig para volver a generar el archivo /boot/grub2/grub.cfg.

# grub2-mkconfig –o /boot/grub2/grub.cfg

– GRUB2 busca el archivo de imagen del núcleo comprimido también llamado vmlinuz en el directorio /boot.
– GRUB2 carga el archivo de imagen del núcleo vmlinuz en la memoria y extrae el contenido del archivo de imagen initramfs en un sistema de archivos temporal basado en la memoria (tmpfs).
– El disco RAM inicial (initrd) es un sistema de archivos raíz inicial que se monta antes que el sistema de archivos raíz real.

initramfs
– El trabajo del sistema de archivos RAM inicial es precargar los módulos de dispositivos de bloque, como IDE, SCSI o RAID, de modo que se pueda acceder al sistema de archivos raíz, en el que normalmente residen esos módulos, y montado.
– El initramfs está vinculado al kernel y el kernel monta este initramfs como parte de un proceso de arranque de dos etapas.
– La utilidad dracut crea initramfs cada vez que se instala un nuevo kernel.
– Use el comando lsinitrd para ver el contenido de la imagen creada por dracut:

# lsinitrd | less

4. Cargando el núcleo

– El núcleo inicia el proceso systemd con un ID de proceso de 1 (PID 1).

– También carga los módulos de controlador necesarios desde la imagen initrd.
– El cargador de inicio (GRUB2) puede presentar un menú de inicio al usuario o puede configurarse para iniciar automáticamente un sistema operativo predeterminado.
– Para cargar Linux, el kernel se carga junto con initramfs. initramfs contiene módulos kernel para todo el hardware que se requiere para arrancar, así como los scripts iniciales necesarios para pasar a la siguiente etapa de arranque.
– En RHEL 7, initramfs contiene un sistema operativo completo (que puede ser utilizado para solucionar problemas).

5. Iniciando systemd

– El núcleo inicia el proceso systemd con un ID de proceso de 1 (PID 1).

root          1      0  0 02:10 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23

– systemd es el primer proceso que se inicia después de que se inicia el sistema y es el proceso final que se ejecuta cuando el sistema se apaga.
– Controla las etapas finales del inicio y prepara el sistema para su uso. También acelera el arranque cargando servicios simultáneamente.
– systemd lee el archivo vinculado por /etc/systemd/system/default.target (por ejemplo, /usr/lib/systemd/system/multi-user.target) para determinar el destino del sistema predeterminado (equivalente al nivel de ejecución). El archivo de destino del sistema define los servicios que inicia systemd.
– systemd le permite administrar varios tipos de unidades en un sistema, incluidos servicios (nombre.servicio) y destinos (nombre.objetivo), dispositivos (nombre.dispositivo) , puntos de montaje del sistema de archivos (nombre.montaje) y sockets (nombre.socket).

Comparación de niveles de ejecución SysV y unidades objetivo

Nivel de ejecución Unidades objetivo Descripción
0 runlevel0.target, poweroff.target Apagar y apagar
1 runlevel1.objetivo, rescate.objetivo Configurar un shell de rescate
2,3,4 nivel de ejecución[234].objetivo, multiusuario.objetivo Configurar un shell multiusuario no gráfico
5 runlevel5.target, graphical.target Configurar un shell gráfico multiusuario
6 runlevel6.target, reiniciar.target Apague y reinicie el sistema

systemd lleva el sistema al estado definido por el objetivo del sistema, realizando tareas de inicialización del sistema como:
1. Configuración del nombre de host
2. Inicializar la red
3. Inicializar SELinux según su configuración
4. Imprimir un banner de bienvenida
5. Inicializar el hardware del sistema según los argumentos de arranque del kernel
6. Montaje de los sistemas de archivos, incluidos los sistemas de archivos virtuales como el sistema de archivos /proc
7. Limpieza de directorios en /var
8. Empezando a intercambiar

Ver unidad de destino predeterminada/actual

Utilice el siguiente comando para ver qué unidad de destino se utiliza de forma predeterminada:

# systemctl get-default
graphical.target

El objetivo.gráfico la unidad de destino indica que el sistema se está ejecutando en un estado gráfico multiusuario. Esto es similar al nivel de ejecución 5 en un sistema de inicio SysV. Puede verificar esto usando el antiguo comando runlevel :

# runlevel
N 5

La unidad objetivo predeterminada está representada por /etc/systemd/system/default.target expediente. Este archivo es un enlace simbólico a la unidad de destino predeterminada actual. Por ejemplo:

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 Sep 23 20:01 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

Cambiar unidad objetivo predeterminada

Utilice el siguiente comando para cambiar la unidad de destino predeterminada (por ejemplo, para cambiar la unidad de destino predeterminada a multiusuario):

# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

Observe que el enlace simbólico default.target ha cambiado y ahora apunta a la unidad multi-user.target:

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 41 Sep 24 11:58 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

La siguiente tabla resume dónde se configura una fase específica y qué puede hacer para solucionar problemas si las cosas salen mal.

Fase de arranque Configuración
POST Configuración de hardware (F2, ESC, F10 u otra tecla)
Seleccionar dispositivo de arranque Configuración BIOS/UEFI o menú de inicio de hardware
Cargando el gestor de arranque grub2-instalar y editar a /etc/defaults/grub
Cargando el kernel Edita la configuración de GRUB y /etc/dracut.conf
iniciar /sbin/init Compilado en initramfs
Procesando initrd.target Compilado en initramfs
Cambiar al sistema de archivos raíz /etc/fstab
Ejecutar el objetivo predeterminado /etc/systemd/system/default.objetivo
CentOS/RHEL 7:Guía para principiantes de systemd
CentOS/RHEL 7:Guía para principiantes de objetivos de systemd (reemplazo de los niveles de ejecución de inicio de SysV)


Cent OS
  1. Modo de usuario único en CentOS 7 / RHEL 7

  2. Instalar Skype en el sistema CentOS 7 - ¿Proceso paso a paso?

  3. No se puede iniciar el sistema operativo Linux con Auditd (CentOS/RHEL)

  4. Reparación de problemas del sistema de archivos en el arranque en CentOS/RHEL 7 y 8

  5. Cómo deshabilitar ACPI en CentOS/RHEL 7

Cómo instalar Cockpit en CentOS 8 / RHEL 8

Configure el servidor FreeIPA en CentOS 7 / RHEL 7:un sistema de gestión de identidad

Cómo iniciar en modo de usuario único en CentOS 8 / RHEL 8

CentOS/RHEL 7:Cómo cambiar la verbosidad de los registros de depuración durante el arranque

CentOS / RHEL 7:cómo iniciar en modo de rescate desde el DVD/ISO de instalación

CentOS / RHEL 5:Cómo iniciar en modo de rescate