Systemd versus Sysvinit. ¿Y Systemd-shim?
Systemd es actualmente el estándar más usado en cuanto a “Sistemas de Inicio del Kernel” (Init) que en entornos Unix, como Linux puede conseguirse. El mismo fue creado hace ya un par de años por Lennart Poettering (principalmente) junto a Kay Sievers (ex-Red Hat). Actualmente el mismo posee una licencia LGPL 2.1 (con excepciones licenciadas bajo GPL2). Aunque hay otras alternativas, como los antiguos y tradicionalistas Sysvinit y Upstart, también hay nuevas alternativas en marcha como Systemd-shim.
A la par de ser el más usado, Systemd es también uno de los polémicos y a veces odiados por una significativa porción de usuarios, que suelen resistirse a su complejidad y dominio o control excesivo sobre las funciones de sus Distros. Por eso, las antiguas o modernas alternativas siguen en pleno auge en bastos sectores de la Comunidad GNU/Linux.
Actualmente Systemd como proyecto de Software Libre está alojado en GitHub y tiene basta documentación sobre la web de “Freedesktop.org“. Y a pesar de que en otros tiempos hemos hablado ampliamente sobre Systemd en el blog, como por ejemplo, en la publicación llamada “Desmitificando SystemD“ del autor “Usemoslinux”, hoy esperamos ampliar un poco más comparando aspectos de sus alternativas vigentes.
¿Qué es Systemd?
Systemd es un Administrador de sistemas y servicios para Sistemas basados en Linux. Pero, de forma más amplia, se puede describir también como un conjunto de bloques de construcción básicos para un Sistema Linux, ya que proporciona un “Administrador de sistemas y servicios” que se ejecuta como un proceso (PID 1) e inicia el resto del sistema.
Systemd proporciona capacidades dinámicas de paralelización, usa “sockets” y “activación de D-Bus” para iniciar servicios. Además, ofrece “inicios” a pedido de demonios, realiza un seguimiento de los procesos utilizando grupos de control de Linux, gestiona puntos de montaje y montajes automáticos e implementa un elaborado control de servicio basado en dependencias transaccionales lógicas.
Por último, y de forma destacable, se puede agregar que Systemd es compatible con los scripts de inicio SysV y LSB y hasta hoy a funcionado como un reemplazo exitoso para Sysvinit en muchas Distros GNU/Linux, independientemente de las valederas criticas u observaciones negativas sobre el mismo.
E incluye un demonio de registro, utilidades para controlar la configuración básica del sistema, como el nombre de host, la fecha, la configuración regional, mantener una lista de usuarios registrados y contenedores y máquinas virtuales en ejecución, cuentas del sistema, directorios y configuraciones de tiempo de ejecución y demonios para administrar una red simple configuración, sincronización de tiempo de red, reenvío de registros y resolución de nombres.
Entre otras cosas, por las cuales es catalogado de pesado, complejo y posesivo sobre las Distros donde es implementado, a pesar de cumplir satisfactoriamente con sus objetivos para los cuales fue creado. Tanto, que la tan conocida Distro DEBIAN, la madre de muchas otras Distros GNU/Linux, ya lleva tiempo implementándolo, lo cual a contribuido a su masificación.
¿Qué es SysVinit?
SysVinit es uno de los más antiguos y vigentes Administradores de sistemas y servicios para Sistemas basados sobre Linux. Todavía es muy usado sobre muchas de las Distros GNU/Linux de trayectorias, y nuevas, como Devuan.
De SysVinit como programa se puede destacar lo siguiente:
“Es el primer proceso en ejecución tras la carga del kernel y el que genera todos los demás procesos, se ejecuta como demonio de init y por lo general tiene PID 1. Provee un proceso estándar para controlar cuáles programas init lanza o detiene en un determinado nivel de ejecución”. Según Wiki de Ex-Debian.org
A diferencia de “init” (Administrador de sistemas y servicios inicial de los sistemas Unix), que arrancaba los servicios de mediante un único script denominado “/etc/rc”. A partir de “SysVinit” se empezó a usar el esquema de directorios en “/etc/rc.d/” que contenían los scripts de arranque/parada de los distintos servicios.
Y a nivel de paquetes y funciones SysVinit contiene programas para controlar el arranque, ejecución y descarga de todos los demás programas. Entre estos se pueden mencionar: halt, init, killall5, last, lastb (enlace a last), mesg, pidof (enlace a killall5), poweroff (enlace a halt), reboot (enlace a halt), runlevel, shutdown, sulogin, telinit (enlace a init), utmpdump y wall. Para aquellos que deseasen instalar y usar sysvinit.
Hasta el día de hoy, la lucha entre Systemd y SysVinit ha sido dura, digna de comparación a la de WhatsApp con Telegram. Y si bien es cierto que el venerable SysVinit tiene fallas o limitaciones (dependiendo del punto de vista de cada quien), las cuales son probablemente solucionables de alguna forma, los partidarios de Systemd suelen atrevida mente afirmar Systemd es actualmente el mejor de todos los Administradores de sistemas y servicios inicial de los sistemas Unix actuales.
De ese hecho, y de esa lucha ha nacido la Campaña “Init Freedom” (IF) diseñada para refutar ese argumento. Init Freedom trata de restaurar un enfoque sano de PID1, uno que respete la diversidad y la libertad de elección. De la cuál puede obtenerse más información visitando el siguiente enlace: Campaña “Init Freedom” (IF), información como por ejemplo, las Distros GNU/Linux que usan alternativas a Systemd.
¿Qué es Systemd-shim?
Por último, y no menos importante nos encontramos a la maravillosa alternativa de Systemd-shim. El cual según la página de paquetería de DEBIAN es un paquete que:
“emula la función systemd que se requiere para ejecutar los ayudantes de systemd sin usar el servicio init”.
Para entender, de que es capaz “Systemd-shim” o como funciona, es bueno verlo en la practica sobre la Distro que más le ha sacado provecho, es decir, MX-Linux. La cual según sus propios creadores ha sido que MX-Linux tenga como característica única:
“El ofrecer la capacidad al usuario para elegir entre Systemd y SysVinit en los sistemas instalados. Una mágica combinación posible gracias a un paquete llamado Systemd-shim. Sin embargo, el desarrollo en systemd-shim se detuvo hace algún tiempo, y Debian recientemente eliminó el paquete de los repositorios de Buster. Entendemos que el estado actual de systemd-shim no funciona correctamente con la versión de Systemd en Debian Buster, por lo que estamos explorando opciones para el futuro de MX. Para ese fin, una cosa que queremos explorar es la posibilidad de continuar el desarrollo de systemd-shim (y cualquier parche de systemd que pueda ser necesario para que el systemd-shim funcione correctamente).
Tan buenos resultados a dado Systemd-shim a MX-Linux, que apartando otras excelentes funcionalidades y ventajas de dicha Distro, MX-Linux se encuentra de primera en Distrowatch y tiene planes futuros de seguir usando System-shim sobre la nueva versión de MX-Linux 19 próxima a lanzarse basada en DEBIAN 10 (Buster).
Yo en lo personal, recomiendo MX-Linux 18.X con Systemd-shim, ya que es rápida ligera y muy funcional. Y en mí caso en particular me permitió crear mi propia Distro basada en ella, la cual llamé: MilagrOS GNU/Linux.
¿Otras alternativas?
En resumen, incluyendo a las mencionadas, tenemos entre las actuales alternativas de “Administradores de sistemas y servicios para Sistemas” (init systems) para Linux a:
- openrc
- runit
- s6
- shepherd
- sinit
- systemd
- systemd-shim
- sysvinit
Conclusión
Espero que este post les sea de mucha utilidad en cuanto a conocer un poco más sobre cada uno de los “init” mencionados y esto les sirva para saber elegir una Distro GNU/Linux con un determinado “Administrador de sistemas y servicios para Sistemas”. Y por último, para los que están un poco más inclinados a favor del uso de Systemd, les recomiendo la lectura del siguiente enlace: Los grandes mitos de Systemd.
El artículo Systemd versus Sysvinit. ¿Y Systemd-shim? aparece primero en Systemd versus Sysvinit. ¿Y Systemd-shim?.