LINUX

Proceso de arranque de Systemd una mirada de cerca en Linux

La forma en que se inicia el sistema Linux es bastante compleja y siempre ha existido la necesidad de optimizar su funcionamiento. El proceso de arranque tradicional del sistema Linux es manejado principalmente por el conocido proceso init (también conocido como sistema de arranque SysV init).

Systemd, por otro lado, es un sistema de inicialización y un administrador de servicios escrito por Lennart Poettering y Kay Sievers. Muchas de las principales distribuciones de Linux han adoptado systemd como el sistema de inicio predeterminado.

En este tutorial, revisaré el proceso de arranque del sistema Linux con systemd.

Entendiendo Systemd

Systemd (System Manager Daemon), originalmente desarrollado bajo la Licencia Pública General GNU, ahora está bajo Licencia Pública General Reducida GNU. Reducir el tiempo de arranque y la sobrecarga computacional es el principal objetivo del desarrollo de Systemd.

Una de las características principales de Systemd es que admite scripts posteriores al arranque de SysV Init, es decir, compatible con versiones anteriores de scripts de inicio SysV.

La manera systemd maneja el proceso de inicio es bastante ordenado y muy optimizado en comparación con el sistema tradicional basado en init.

Repasemos algunas de las características principales de Systemd.

  • El proceso de arranque es mucho más simple en comparación con el init
  • Systemd proporciona un proceso de arranque del sistema simultáneo y paralelo, por lo que garantiza una mejor velocidad de arranque
  • Los procesos se rastrean mediante grupos de control, no mediante PID
  • Formas mejoradas de manejar las dependencias de arranque y servicios.
  • Capacidad de realizar instantáneas del sistema y restaurar
  • Seguimiento de servicios iniciados; también capaz de reiniciar cualquier servicio fallado
  • Incluye módulo systemd-login para controlar los inicios de sesión de los usuarios.
  • Posibilidad de agregar y quitar componentes
  • Huellas de poca memoria y capacidad para la programación de trabajos
  • Módulo journald para registro de eventos y módulo syslogd para registro del sistema.

Systemd también maneja el proceso de apagado del sistema de una manera bien organizada. Tiene tres secuencias de comandos ubicadas dentro del directorio ‘/ usr / lib / systemd /’, llamadas systemd-halt.service, systemd-poweroff.service, systemd-reboot.service. Estos scripts se ejecutan cuando un usuario elige apagar, reiniciar o detener el sistema Linux.

En caso de apagado, systemd primero desmonta todos los sistemas de archivos y deshabilita todos los dispositivos de intercambio, desconecta los dispositivos de almacenamiento y mata los procesos restantes.

gráfico de arranque de systemd

Proceso de arranque con Systemd

Comprobemos el proceso de arranque del sistema Linux cuando esté usando systemd como administrador de arranque y servicios.

En aras de la simplicidad, enumeramos el proceso en los pasos a continuación:

01. Los primeros pasos cuando enciende su sistema es la inicialización del BIOS. El BIOS lee la configuración del dispositivo de arranque, localiza y entrega el control a MBR (asumiendo que el disco duro está configurado como primer dispositivo de arranque).

02. MBR lee información del cargador de arranque Grub o LILO e inicializa el kernel. Una vez que el kernel se carga en el disco RAM inicial, comienza la inicialización de systemd.

Systemd maneja el proceso de administración de servicios y arranque usando «objetivos». Los archivos de «destino» en systemd se utilizan para agrupar diferentes unidades de arranque e iniciar procesos de sincronización.

03. El primer objetivo ejecutado por systemd es default.target. Pero default.target es en realidad un enlace simbólico a objetivo gráfico. El enlace simbólico en Linux funciona igual que los atajos en Windows. El archivo Graphical.target se encuentra en la ruta /usr/lib/systemd/system/graphical.target. Hemos mostrado el contenido del archivo graphical.target en la siguiente captura de pantalla.

objetivo gráfico

04. En este punto, multi-user.target se ha invocado y este objetivo mantiene sus otras subunidades dentro del directorio “/etc/systemd/system/multi-user.target.wants”. Este objetivo establece el entorno para el soporte de múltiples usuarios. Ningún usuario root está habilitado en esta etapa del proceso de arranque. Los servicios relacionados con el cortafuegos también se inician en esta etapa del arranque.

objetivo multiusuario

«multi-user.target» pasa el control a otra capa «objetivo.básico”.

Objetivo básico
05. La unidad «basic.target» es la que inicia los servicios habituales, especialmente el servicio de gestor gráfico. Utiliza el directorio /etc/systemd/system/basic.target.wants para decidir qué servicios deben iniciarse, basic.target pasa el control a sysinit.target.
Objetivo de Sysint

06. «Sysinit.target» inicia servicios importantes del sistema como montaje del sistema de archivos, espacios y dispositivos de intercambio, opciones adicionales del kernel, etc. Sysinit.target pasa el proceso de inicio a local-fs.target. El contenido de esta unidad de destino se muestra en la siguiente captura de pantalla.

Objetivo FS local
07. local-fs.target: esta unidad de destino no inicia servicios relacionados con el usuario, solo maneja servicios básicos de bajo nivel. Este objetivo es el que realiza acciones sobre la base de los archivos ‘/ etc / fstab’ y ‘/ etc / inittab’.

Análisis del rendimiento de arranque del sistema

Systemd ofrece herramientas para identificar y solucionar problemas relacionados con el arranque o problemas de rendimiento. Systemd-analizar es un comando integrado que le permite examinar el proceso de arranque. Puede encontrar las unidades que enfrentan errores durante el arranque y puede seguir rastreando y corregir los problemas de los componentes de arranque. A continuación se enumeran algunos comandos útiles de systemd-analyse.

tiempo de análisis de systemd muestra el tiempo empleado en el kernel y el espacio de usuario normal.

$ systemd-analyze time

Startup finished in 1440ms (kernel) + 3444ms (userspace)

systemd-analyse culpar imprime una lista de todas las unidades en ejecución, ordenadas por el tiempo que tarda en inicializarse, de esta manera puede tener una idea de qué servicios están tardando mucho en iniciarse durante el arranque.

$ systemd-analyze blame

2001ms mysqld.service
234ms httpd.service
191ms vmms.service

systemd-analizar verificar muestra si hay errores de sintaxis en las unidades del sistema. Gráfico de análisis de Systemd se puede utilizar para anotar todo el proceso de inicio en un archivo de formato SVG. Todo el proceso de arranque es muy largo de leer, por lo que con este comando podemos volcar la salida de todo el proceso de arranque en un archivo y luego leerlo y analizarlo más. El siguiente comando se encargará de esto.

systemd-analyze plot > boot.svg

Controversias del sistema

Systemd no ha tenido la suerte de recibir el cariño de todos, algunos profesionales y administradores tienen opiniones diferentes sobre su funcionamiento y desarrollos. Según los críticos de Systemd, «no es similar a Unix» porque intentó reemplazar algunos servicios del sistema.

A algunos profesionales no les gusta la idea de usar archivos de configuración binarios también. Se dice que editar la configuración de systemd no es una tarea fácil y no hay herramientas gráficas disponibles para este propósito.

Conclusión

Dicho esto, espero que hayas disfrutado leyendo este tutorial sobre el paso del proceso de arranque de systemd. No dude en dejar sus sugerencias en la sección de comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar