Systemd ¿Quien está equivocado sobre el?.

Hace poco estuve conversando con varios camaradas de distintos lugares y de distintas distros y hay un tema que siempre sale, es casi un impulso natural que salga a flote el tema de los inits pero es aún mas natural que siempre existan opiniones distintas sobre el sistema de init actual de las distribuciones, entre ellos se encuentra el tan amado/odiado systemd.

 Hablando con estas personas dije "eh, vamos a escribir una entrada y en el camino ver si systemd es realmente un engendro del demonio como lo llaman".

Primero veamos que demonios es systemd....pues en efecto, son demonios, un conjunto de demonios que administran el sistema, librerías y demás herramientas del sistema. Este fue desarrollado principalmente con el proposito de reemplazar el init de los sistemas operativos UNIX-like como systemV.

La primera distribución en adoptar por defecto a systemd fue Fedora en su versión 15, mas tarde le seguirían Mageia, OpenSUSE 12, CentOS 7 y Debian desde su versión 8.
Este cambio radical de algo que es muy importante en los sistemas Gnu/Linux dio un golpe duro a los usuarios, a algunos les encantaba una idea revolucionaria de un init nuevo que además rompiese esa "fragmentacion" de herramientas en los sistemas Unix-Like. Por otra parte a otros usuarios les disgustaba la idea de algo nuevo, ¿Para qué cambiar algo que ya funciona y funciona bien? pues bien, esto ha dado lugar a varios debates el que yo voy a tocar es: ¿Systemd es TAN malo como dicen? y si lo vemos desde el otro lado ¿Es TAN bueno como se afirma?, veamos a fondo esto. (Presentaré el mismo número de ventajas y desventajas comparables, mi postura se mantendrá neutral ante este tema)

Ventajas:

  • Systemd hace que los procesos de arranque sean mucho más sencillos, eliminando la necesidad de satisfacer dependencias (sysvinit) gracias a D-Bus, su activación de socket y la integración de udev
  • Systemd es increíblemente rápido (tarda aprox 1 segundo para arrancar). Nótese que systemd no fue diseñado con la velocidad en mente, pero haciendo sus cosas correctamente evita cualquier retraso incurrido por el proceso de arranque
  • Systemd extiende las funciones del registro del sistema de muchas maneras con la herramienta journald y éste puede ser integrado perfectamente con el demonio de rsyslog.
  • La puesta en marcha y el monitoreo de servicios centralizado de systemd  facilitan mucho la configuración de alta disponibilidad con software como un marcapasos.
Desventajas:
  • Systemd no es portátil. Mantener un sistema con systemd y otros inits es más trabajo ya que se necesita configurar ambos y no se puede usar solo un script de sysv.
  •  Los archivos de la herramienta journald se almacenan como binarios por ende deben de ser consultados utilizando journalctl, esto es un problema ya que archivos muy grandes pueden causar caidas en sistemas de recursos limitados y para mas "INRI" esto los vuelve altamente corruptibles.
  • Todos los demonios están muy agrupados e integrados lo que dificulta la sustitución por alternativas mas ligeras o mas cómodas para ciertos usuarios, además de que no ofrece la capacidad para crear su propio motor de políticas de cgroup.
  • Controla muchas cosas, al seguir la filosofía unix se asegura que haga una sola cosa y la haga bien, el problema se da cuando el software hace varias cosas ya que hay que revisar minuciosamente el error, donde está y verificar por que está fallando.

Me he tomado la libertad de hacerle preguntas a dos usuarios que tuviesen una idea diferente hacia systemd, veamos sus respuestas:

Usuario 1: 
¿Has usado systemd?:  "Si he usado systemd"
¿Qué ventajas y desventajas ves?: "¿Qué ventajas le veo?, solo le veo 2 ventajas, número 1, que va fluido a la hora de iniciar y número 2, la sintaxis fácil para iniciar, apagar, habilitar o deshabilitar servicios."

¿Te gusta systemd? ¿Por que?: "¿Si me gusta? No, no me gusta para nada, ¿Por qué? porque primero y principal genera muchos problemas en la máquina, el aveces cuando termina, llega a un punto donde el mismo colapsa, te apaga los servicios de red, te los vuelve a encender solos, a veces tienes que reiniciar el servicio 20,000 veces simplemente para que inicie, a veces no te reconoce algunos periféricos, cuando quieres quitar un módulo a veces te cuesta, en otros momentos te lo quita el solo, otras veces te agrega módulos que tú ni si quiera has agregado, me han pasado muchos problemas con systemd, no me gusta por nada."

¿Crees que systemd mejore con el tiempo?: "¿Si creo que systemd mejorará con el tiempo?, primero y principal, no lo creo por que gastan mas tiempo y energías resolviendo bugs que implementandole cosas mejores, implementandole cosas que eviten ese problema de que el sistema deje de ser, err, los sistemas GNU dejen  de ser tipo Unix a ser tipo Windows, entonces ese problema donde el llega y tiende a ser un segundo kernel que es el que controla el sistema con el kernel tiende a ser un problema. Los únicos proyectos buenos que yo veo que son un proyecto completo, le dan mantenimiento al init y le dan mantenimiento al sistema son los sistemas BSD y los sistemas Slackware y Void, son los únicos 3 sistemas que yo veo que vale la pena usarlos por que el equipo se enfrasca en el Kernel, sistema y el gestor de inicio, por mas nada. Systemd no creo que mejore como tal por eso que ya mencioné y por que su comunidad va degradandose poco a poco, hay algunos que siguen utilizando systemd y lo usan simplemente por que la distro que les gusta implementó systemd pero ellos odian como tal systemd, muchas personas simplemente se instalan una distribución que les guste y vuelan el init, por eso a veces no hay tantos bugs reportaros y si me llegase a mejorar, en un dado caso que llegase a mejorar lo primero que tiene que mejorar para mi gusto  es que deje de ser una integración como el segundo kernel del sistema, que deje de ser un segundo kernel por que NO es un kernel, el simplemente es el que está gestionando los procesos entre el sistema y el kernel, que deje de ser el que controle netamente el  kernel, por  que eso es lo que está haciendo el controla netamente el kernel, entonces eso causa mas problemas a futuro, acarrea todos los problemas del pasado y los va a llevar al futuro, poco a poco."

Usuario 2:
¿Has usado systemd?: "Si, mi primer contacto con systemd fue cuando probé Debian Testing antes de que "Jessie" fuese liberada"
¿Qué ventajas y desventajas ves?:"Yo he visto varias de las 2, la primer ventaja que vi fue el arranque de mi máquina, creo que antes de la versión 8 de Debian el init era el de sysv y la velocidad de arranque es notable, una desventaja que también veo es que en mi raspberry pi cuando quiero exportar un log muy grande de journald esta directamente deja de funcionar y tengo que reiniciar a la pequeña máquina."
¿Te gusta systemd? ¿Por qué?: "Me costó trabajo adaptarme al inicio pero, si, si me gusta.
me gusta en el sentido de que es algo distinto, mi primera distribución de Linux fue la ya descontinuada Mandriva con un escritorio KDE viejisimo, me tocó ver cuando la conocida distro de ubuntu cambió a upstart pero también llegué a usar el init de sysv. Al llegar systemd me confundí bastante y al inicio pensaba lo que muchos, ¿Para que otro init? ¿Qué tiene de diferente? pero veo que me equivoqué, un día decidí investigar sobre systemd y sus comandos los cuales me parecieron muy fáciles, me gusta el hecho de que gestione las tty de una forma dinámica y no de forma estática, entre otras cosas."
¿Crees que systemd mejore con el tiempo?:"¿Si creo eso? la verdad SI, el problema con systemd es que maneja muchas cosas y hay que reconocerlo, es mucho para un init, pero si más gente se unisese a Github para contribuir al código y arreglar bugs reportados systemd sería aun más estable y de ser posible podrían fragmentar el código para evitar ese "paquete enorme" que es systemd.

Ante esto ¿Qué postura debería tomar uno?, por un lado systemd tiene una buena cantidad de bugs, pero por otra parte es una idea "revolucionario" entonces ser pro-systemd o ser anti-systemd? ninguno de estos dos usuarios es radical ante la idea de systemd, a uno no le gusta, al otro si, ¿quien tiene razón? ¿quien está equivocado? la respuesta correcta es:





NINGUNO.

Parte de usar un sistema de Gnu/Linux es la capacidad de elección, tenemos muchas alternativas adaptadas a la misma cantidad de gustos, hay personas que prefieren distribuciones con software mas actual, otras con software mas estable (viejo), pero ¿a que voy con esto?, simple, es el mismo concepto con systemd y otros inits, seas defensor o detractor de systemd ninguna de las dos ideas llevada al extremo te va a llevar a un resultado o conclusión definitiva, más aun si el argumento es la filosofía unix ya que incluso si nos fijamos como están estructurados los sistemas BSD o Solaris están estructurados notamos que son muy similares a systemd, un gran set de pequeñas utilidades, cada una con un propósito definido pero que no son ABSOLUTAMENTE intercambiables o reemplazables, si quitásemos para siempre systemd como lo afirman los que lo detestan ya estamos violando esa idea de libertad, por que dejas sin alternativa a los que SI les gusta systemd, por el otro lado si los defensores de systemd triunfan en el hecho de eliminar cualquier init que no sea systemd viola aun más la idea de libertad ya que eliminas TODA alternativa que otros puedan usar, si detestas systemd simplemente no lo uses, es muy fácil cambiar el init y si el hecho de que systemd esté en tu máquina incluso sin ser usado puedes bajar cualquier fork de la distribución que no use systemd, ya tenemos ejemplos como Devuan, AntiX, Manjaro OpenRC o Slackware, si puedes soportarlo ayuda al proyecto, si sabes que puedes arreglar un error haz un fork, arregla el bug y haz un request, si el proyecto empeora o muere sabrás que  por lo menos hiciste algo para intentar mejorarlo, si te gusta systemd úsalo, no debería haber ningún problema, si alguien más desea usar otro init déja que lo use, primero por que lo que los demás tengan en su máquina no te concierne en ningún aspecto y segundo punto, si tanto te gusta de igual forma, ¡ayuda al proyecto! mejora aquello que te gusta.

Mi postura se mantiene neutral, los TAN famosos bugs de 90 segundos o del apagado lento de systemd no me han afectado por ahora, si systemd funciona y me funciona bien lo voy a usar, si la distro que uso de la noche a la mañana cambia de init no hay problema, puedo aprender como usar OpenRC, runit o lo que sea que ponga o algo tan simple como cambiar de distro. He visto muchos "argumentos" que puedo catalogar como tontos el más común es "systemd es una forma de vigilancia, es parte de la NSA", y jamás he visto una fuente SERIA donde se demuestre con claridad que systemd está espiando al usuario, por otra parte es Software Libre, tienes derecho a descargarlo compilarlo, modificarlo y entenderlo por lo tanto puedes ver TODAS Y CADA UNA de las líneas de código y comprobar que efectivamente no hay nada. Incluso los pro-systemd llegan a tener argumentos "tontos" como: "Systemd es monolítico, es de Red Hat y por eso es bueno". Para empezar systemd aunque fue desarrollado por Red Hat no pertenece 100% a ellos y segundo, systemd está compuesto por 67~68 binarios, un paquete con esa cantidad de binarios no puede ser llamado monolítico.

Con esto cierro la entrada del blog, siendo ésta la más larga que he escrito, mi postura permanecerá neutral con systemd, no pienso que sea perfecto pero tampoco pienso que sea malo, es el init con el que puedo trabajar mejor y por eso lo uso no por odio a los demás inits.

¿Qué opinas tú respecto a systemd? ¿Crees que es bueno o que es malo? Déjame tu opinión en los comentarios, gracias por leer y nos vemos, ¡Hasta la próxima!

Comentarios

Entradas populares