Systemd - What You Need to Know

Systemd: lo que necesita saber

A menos que haya estado viviendo debajo de una roca, o peor aún, no le importe mucho cómo funciona Linux, debe haber oído hablar de sistemadel (relativamente) nuevo sistema de inicio que reemplaza al antiguo y obsoleto SysV init adoptado recientemente por la mayoría de las principales distribuciones de Linux.

¿Qué es un sistema de inicio?

Cuando su máquina Linux se inicia, primero ejecutará un código «incorporado», cargado primero desde el BIOS o UEFI, seguido por el cargador de arranque, que según su configuración carga un kernel de Linux. El kernel carga los controladores y, como su primer trabajo, inicia el proceso de inicio, que es el primero en el que se le asigna el PID (ID de proceso) 1.

Desde el punto de vista del usuario, esto parece poner en marcha redes y bases de datos, etc., pero en realidad hay un proceso bastante complejo que tiene lugar bajo el capó. Los servicios se inician, detienen y reinician, a menudo en paralelo. Algunos se ejecutan con diferentes privilegios que otros, los estados de los servicios se informan y registran, y se realizan muchas otras tareas que harán que las diferentes partes de su sistema funcionen y puedan interactuar con sus usuarios y su entorno.

systemd-linux-arranque

Sin embargo, la forma en que esto se implementa está lejos de ser uniforme, y aquí es realmente donde todo deja de ser común y bien definido.

El viejo sistema de inicio

El sistema de inicio utilizado por la mayoría de las principales distribuciones de Linux hasta hace poco era System V init (o SysV init para abreviar), que ha derivado su forma de nombre Sistema UNIX V (Pronunciado “System Five”), el primer sistema UNIX comercialmente disponible. System V OS ha tenido una forma específica de ejecutar su proceso de inicio, y SysV init se ha mantenido fiel a esto a lo largo de los años.

systemd-sysvinit

Y han sido muchos años. UNIX System V se lanzó originalmente en 1983, lo que hace que init SysV init sea un enfoque de más de 30 años para iniciar máquinas Linux.

La necesidad de un cambio

Como se ha señalado, SysV init se ha quedado obsoleto y hace mucho tiempo que debería ser reemplazado. Algunas de las razones para esto incluyen:

  • SysV init usa /sbin/init para iniciar el proceso de inicio, pero init en sí mismo tiene un papel muy limitado. init hace poco más que iniciar /etc/init.d/rc, según la configuración leída de /etc/inittab, que a su vez ejecutará scripts para realizar el trabajo real del proceso de inicio. Esto, a menos que esté panelizado explícitamente (como con startpar en Debian), ocurrirá de manera secuencial, un script comienza tras otro, lo que hace que todo el proceso sea lento, ya que cada script tiene que esperar a que finalice el anterior.
  • SysV init no tiene acceso al PID ni a los procesos que ha iniciado (indirectamente). Solo lee PID y los asocia con procesos reales de manera circunstancial y complicada.
  • Para los administradores de sistemas que intentan modificar el entorno en el que se iniciaría un determinado proceso, es bastante difícil con SysV init. (Para lograr esto, tendrán que modificar el init strcipt que es responsable de iniciar el proceso dado).
  • Existe cierta funcionalidad común a todos los servicios que SysV no implementa, pero cada proceso tendría que implementarse a sí mismo en su lugar, como «demonizarse» a sí mismos (convertirse en un demonio del sistema), que es un proceso elaborado y largo. En lugar de implementar estos pasos una vez, SysV requiere que cada proceso haga el trabajo por sí mismo.
  • SysV también deja ciertas funcionalidades a programas externos y no sabe nada sobre los servicios iniciados por ellos.

Todo lo anterior, y muchos más defectos de diseño, o más bien el diseño obsoleto del sistema de SysV, ha hecho que la creación de un sistema de inicio moderno se haya retrasado mucho.

Ingrese systemd

Hubo muchos intentos de crear un sistema de inicio alternativo, de los cuales systemd es solo uno de ellos. Ubuntu solía ejecutar su propio sistema de inicio llamado advenedizo. Gentoo todavía usa OpenRC. Otros sistemas de inicio incluyen iniciando, busybox-init, ejecutarloy mudur y otros.

La razón por la que systemd es un claro ganador es que ha sido adoptado por la mayoría de las principales distribuciones. RHL y CentOS naturalmente siguieron el camino de systemd, ya que Fedora fue la primera distribución en adoptar oficialmente systemd en 2011. Pero systemd realmente se ha convertido en el único sistema de inicio para gobernarlos a todos, cuando Debian 8 cambió oficialmente a systemd, trayendo consigo Ubuntu y derivados. , superando el de Canonical (o más precisamente el de Mark Shuttleworth) oposición inicial hacia systemd.

¿En qué se diferencia systemd?

  • Systemd tiene como objetivo proporcionar una forma única y centralizada de manejar el proceso de inicio de principio a fin.
  • Inicia y detiene procesos y servicios mientras realiza un seguimiento de sus dependencias. Incluso puede iniciar un proceso como respuesta al requisito de dependencia de otro proceso.
  • Además de iniciar y detener procesos durante el tiempo de arranque, Systemd también puede iniciarse en cualquier momento cuando el sistema está activo en respuesta a ciertos eventos desencadenantes, como cuando se conecta un dispositivo.
  • Tampoco requiere procesos para demonizarse a sí mismos. A diferencia de SysV init, systemd puede manejar servicios en ejecución sin tener que pasar por el largo proceso de convertirse en demonios.
  • A diferencia de SysV init, systemd conoce y realiza un seguimiento de todos los procesos, incluidos los PID, y obtener información sobre los procesos es mucho más sencillo para los administradores de sistemas en systemd.
  • Systemd admite contenedores que son básicamente entornos de servicio aislados sin el requisito de máquinas virtuales. Esto tiene un gran potencial para diseños de sistemas más seguros y simples en el futuro.

contenedores systemd

Por supuesto, estas son solo algunas de las principales ventajas. Para una discusión completa sobre las ventajas de systemd, debe leer Debian 8 «Declaración de posición de Systemd

Controversia

Por supuesto systemd no fue bien recibido por todos. De hecho, muchos lo han hecho y lo siguen haciendo. fruncir el ceño, llamándolo monolítico y engorroso, algunos incluso lo acusan de seguir el «camino de Windows» de tener todo centralizado. Muchos argumentan que no es “al estilo Linux”, y ciertamente systemd no parece estar de acuerdo con los estándares POSIX, y si consideramos systemd como un conjunto de herramientas (más allá del binario), definitivamente es enorme.

systemd-infografía

Sin embargo, systemd es claramente un paso adelante, y aunque no es perfecto, muchas de las críticas que ha recibido han sido abordado por su autor original y el desarrollador Lennart Poettering. Definitivamente es un avance muy necesario y un paso adelante del antiguo sistema de inicio. Linus Torvalds, el creador de Linux, no parece importarle systemd demasiado, y quiénes somos nosotros para discutir con «El Creador».

Conclusión

Después de haber sido adoptado por todas las principales distribuciones de Linux, systemd está aquí para quedarse. Independientemente de lo que digan algunos administradores de sistemas por el motivo que sea, systemd es el futuro de la corriente principal de Linux, les guste o no a los usuarios individuales, lo que, considerando sus distintas ventajas, no es necesariamente algo malo.

Para el usuario promedio, brinda tiempos de arranque más rápidos y probablemente sistemas más confiables, mientras que en el futuro, las distribuciones que lo adopten pueden volverse más «compatibles» entre sí. Por parte del usuario, definitivamente nos beneficiaremos del diseño de sistema más actualizado y contemporáneo que trae a nuestros escritorios.

Experto Geek - Tu Guía en Tendencias Tecnológicas