LINUX

Proceso de arranque de Systemd, una mirada de cerca en Linux

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

Systemd, por otro lado, es un sistema de inicio y administrador de servicios escrito por Lennart Poettering y kay sievers. Muchas de las principales distribuciones de Linux ahora han adoptado systemd como su sistema de inicio predeterminado.

En este tutorial, pasaré por el proceso de arranque de su sistema Linux con systemd.

Entendiendo Systemd

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

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

La manera systemd maneja el proceso de arranque es bastante ordenado y mucho más optimizado en comparación con el sistema tradicional basado en init.

Revisemos algunas de las características básicas de Systemd.

  • El proceso de arranque es mucho más simple en comparación con init.
  • Systemd proporciona un proceso de arranque del sistema simultáneo y paralelo para garantizar una mejor velocidad de arranque
  • Los procesos se rastrean usando grupos de control, no PID
  • Maneras mejoradas de manejar las dependencias de arranque y servicio.
  • Instantánea del sistema y capacidad de restauración
  • Seguimiento de servicios iniciados; también puede reiniciar cualquier servicio bloqueado
  • Incluye el módulo systemd-login para controlar la autenticación de usuarios.
  • Posibilidad de agregar y quitar componentes.
  • Huellas de memoria bajas y capacidad de programación de trabajos
  • Módulo journald para registro de eventos y módulo syslogd para syslog.

Systemd maneja el proceso de apagado del sistema de una manera bien organizada. Tiene tres scripts ubicados en el directorio «/usr/lib/systemd/» llamados systemd-halt.service, systemd-poweroff.service, systemd-reboot.service. Estos scripts se ejecutan cuando un usuario elige apagar, reiniciar o apagar el sistema Linux.

Al apagar, systemd primero desmonta todos los sistemas de archivos y desmonta todos los dispositivos de intercambio, desconecta los dispositivos de almacenamiento y elimina los procesos restantes.

diagrama de inicio systemd

El proceso de arranque con Systemd

Verifiquemos el proceso de inicio del sistema Linux cuando usa systemd como administrador de inicio y servicio.

Para simplificar, enumeramos el proceso en los pasos a continuación:

01. Los primeros pasos al iniciar el sistema es inicializar el BIOS. El BIOS lee la configuración del dispositivo de inicio, localiza y entrega el control al MBR (suponiendo que el disco duro esté configurado como el primer dispositivo de inicio).

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

Systemd gestiona el proceso de inicio y gestión de servicios utilizando «objetivos». Los archivos de «objetivo» en systemd se utilizan para agrupar las distintas unidades de arranque y para iniciar procesos de sincronización.

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

objetivo gráfico

04. En este punto, objetivo multiusuario fue invocado y este destino mantiene sus subunidades posteriores en el directorio «/etc/systemd/system/multi-user.target.wants». Este objetivo establece el entorno para el soporte multiusuario. Ningún usuario raíz está habilitado en esta etapa del proceso de arranque. Los servicios relacionados con el cortafuegos también se inician en esta etapa de arranque.

objetivo multiusuario

«multi-user.target» pasa el control a otra capa «base.objetivo«.

Objetivo básico

05. La unidad «basic.target» es la que inicia los servicios habituales, especialmente el servicio de gestión de gráficos. Utiliza el directorio /etc/systemd/system/basic.target.wants para decidir qué servicios iniciar, basic.target pasa el control a sysinit.objetivo.

Objetivo del sistema

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

destino de FS local

07 local-fs.target: esta unidad de destino no inicia ningún servicio relacionado con el usuario, solo maneja servicios básicos de bajo nivel. Este destino es el que realiza acciones basadas en los archivos «/etc/fstab» y «/etc/inittab».

Análisis del rendimiento de inicio del sistema

Systemd proporciona herramientas para identificar y solucionar problemas de inicio o problemas de rendimiento. análisis systemd es un comando incorporado que le permite examinar el proceso de inicio. Puede averiguar qué unidades están experimentando errores durante el inicio, y puede realizar un seguimiento y solucionar problemas de los componentes de inicio. A continuación se enumeran algunos comandos útiles de systemd-analyze.

systemd-analizar el tiempo muestra el tiempo pasado en el espacio de usuario principal y normal.

$ systemd-analyze time

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

fallo de systemd-analyze imprime una lista de todas las unidades en ejecución, ordenadas por el tiempo que ha tardado en inicializarse hasta el momento, de esta manera puede hacerse una idea de qué servicios tardan más en iniciarse durante el arranque.

$ systemd-analyze blame

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

comprobaciones de systemd-analyze muestra si hay errores de sintaxis en las unidades del sistema. Sistema de análisis de gráficos 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 el resultado de todo el proceso de arranque en un archivo y luego leerlo y analizarlo más a fondo. El siguiente comando se encargará de eso.

systemd-analyze plot > boot.svg

Controversia 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 desarrollo. Según los críticos de Systemd, «no es como Unix» porque intentó reemplazar algunos servicios del sistema.

A algunos profesionales tampoco les gusta la idea de usar binarios de configuració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 haya disfrutado leyendo este tutorial paso a paso sobre el proceso de arranque de systemd. Por favor, siéntase libre de 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