Por qué systemd de Linux sigue siendo divisivo después de todos estos años

systemd tiene 10 años, pero los sentimientos al respecto en la comunidad de Linux no se han suavizado: ahora es tan divisivo como siempre. Aunque es utilizado por muchas de las principales distribuciones de Linux, la oposición incondicional no ha cedido.

La secuencia de arranque de Linux

Cuando enciende su computadora, el hardware arranca y luego (según el tipo de sector de arranque su computadora usa) ya sea el Registro de arranque principal (MBR) ejecuta o el Interfase Extensible de Firmware Unificado (UEFI) se ejecuta. La ltima accin de ambos es encender el Kernel de Linux.

El kernel se carga en la memoria, se descomprime y se inicializa. UN sistema de archivos temporales se crea en RAM, generalmente mediante una utilidad llamada initramfs o initrd. Esto permite determinar y cargar los controladores necesarios. Esto, a su vez, permite que el sistema de archivos de espacio de usuario se cargue y se prepare para establecer el entorno de espacio de usuario.

La creación del entorno de espacio de usuario es manejada por el proceso init, que es el primer proceso lanzado por el kernel en un espacio de usuario. Tiene un identificacion de proceso (PID) de 1. Todos los demás procesos son hijos directos o indirectos del proceso init.

Antes de systemd, el valor predeterminado principal para el proceso de inicio era una reelaboración del Unix System V init. Había otras opciones disponibles, pero System V init era la opción estándar en la mayoría de losDistribución de software de Berkeley (BSD) distribuciones derivadas. Debido a que vino directamente de System V Unix, el antepasado espiritual de Linux, mucha gente lo considera como «la forma oficial» de hacer init.

El proceso init inicia todos los demonios y los servicios necesarios para que el sistema operativo funcione de forma significativa e interactiva. Estos demonios manejan cosas como la pila de redes, habilitando otro hardware dentro de su computadora y proporcionando una pantalla de arranque.

Muchos de estos procesos en segundo plano continúan ejecutándose después de iniciarse. Hacen cosas como registrar información de eventos, observar los cambios de hardware a medida que inserta o quita dispositivos y administra los inicios de sesión de los usuarios. Como era de esperar, el sistema de inicio también incluye funciones para administrar servicios.

Nosotros podemos usar PD para ver el proceso que tiene PID 1. Usaremos las opciones f (listado de formato completo) yp (PID):

ps -fp 1

ps -fp 1 en una ventana de terminal.

Vemos que el proceso con PID 1 es systemd. Ejecutar el mismo comando en Manjaro Linux produjo un resultado diferente. El proceso con PID 1 se identificó como / sbin / init. Un vistazo rápido a ese archivo muestra que es un enlace simbólico a systemd:

ps -fp 1
ls -hl /sbin/init

ps -fp 1 en una ventana de terminal.

Usando la opción ppid (ID de proceso principal) con ps, podemos ver qué procesos han sido lanzados directamente por systemd:

ps -f --ppid 1

ps -f --ppid 1 en una ventana de terminal.

Es una lista bastante larga, como puede ver en la imagen de abajo.

ps -f --ppid 1 en una ventana de terminal.

Las alternativas

Varios proyectos han intentado producir una alternativa al sistema tradicional de inicio V. Uno de los principales problemas es que, con System V init, todos los procesos se inician en serie, uno tras otro. Para mejorar la eficiencia de la secuencia de arranque, muchos proyectos alternativos utilizan el paralelismo para iniciar procesos de forma simultánea y asincrónica.

  Cómo instalar VSCodium IDE en Linux

Aquí hay información sobre algunos de estos:

Advenedizo: Desarrollado por Canónico, se usó en Ubuntu 9.10, sombrero rojo, Red Hat Enterprise Linux (RHEL) 6, CentOS 6, y Fedora 9.
Ejecutarlo: Se ejecuta en FreeBSD y otros derivados de BSD, macOS y Solaris, así como sistemas Linux. También es el sistema de inicio predeterminado en Vacío Linux.
s6-linux-init: Este reemplazo para System V init fue diseñado para seguir de cerca el Filosofía Unix, que a menudo se reduce a la frase «haz una cosa y hazla bien».

Hay muchos otros de diferente funcionalidad y diseño. Sin embargo, ninguno de ellos creó el furor systemd lo hizo.

El camino systemd

systemd fue lanzado en 2010 y se usó en Fedora en 2011. Desde entonces, ha sido adoptado por muchas distribuciones. Fue desarrollado por Lennart Poettering y Kay Sievers, dos ingenieros de software de RedHat.

systemd es mucho más que un reemplazo de init. Más bien, es un conjunto de aproximadamente 70 binarios que manejan la inicialización del sistema, los demonios y los servicios, el registro y el diario, y muchas otras funciones que ya estaban manejadas por módulos dedicados en Linux. La mayor parte de estos no tienen nada que ver con la inicialización del sistema.

Algunos de los demonios proporcionados por systemd son:

systemd-udevd: gestiona dispositivos físicos.
systemd-logind: administra los inicios de sesión de los usuarios.
systemd-resuelto: proporciona resolución de nombres de red a aplicaciones locales.
systemd-networkd: administra y detecta dispositivos de red y administra configuraciones de red.
systemd-tmpfiles: crea, elimina y limpia archivos y directorios temporales y volátiles.
systemd-localed: administra la configuración regional del sistema.
systemd-machined: detecta y supervisa contenedores y máquinas virtuales.
systemd-nspawn: puede lanzar un comando u otro proceso en un contenedor de espacio de nombres ligero, dando una funcionalidad similar a chroot.

Y eso es solo la punta del iceberg, que también es el meollo del asunto. systemd ha superado desde hace mucho tiempo lo que se requiere de un sistema de inicio, que, según sus oponentes, es la definición misma de alcance.

«Es muy grande. Hace demasiado «.

Los oponentes de systemd señalan la gran y curiosa mezcla de funcionalidades que abarca. Todas estas características ya existían en Linux y, quizás, algunas de ellas necesitaban una actualización o un nuevo enfoque. Sin embargo, agrupar todas estas funciones en lo que se supone que es un sistema init es arquitectónicamente desconcertante.

systemd ha sido llamado un punto único de falla para demasiadas funciones críticas, pero esto no parece ser justificable. Es cierto que lanza el Filosofía Unix de crear pequeñas herramientas que funcionen juntas en lugar de grandes piezas de software que hacen todo por la ventana. Si bien systemd no es estrictamente monolítico (se compone de muchos binarios en lugar de uno solo enorme), sí incluye muchas herramientas de administración y comandos dispares bajo un mismo paraguas.

Si bien puede que no sea monolítico, es grande. Para tener una idea de la escala, contamos las líneas de texto en el código base del kernel 5.6.15 y la rama maestra de systemd del repositorio de GitHub.

Esta fue una métrica relativamente burda. Contaba líneas de texto, no solo líneas de código. Entonces, esto incluyó comentarios, documentación y todo lo demás. Sin embargo, fue una comparación igual a igual y nos dio un criterio simple:

( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l

El núcleo tenía casi 28 millones (27,784,340, para ser exactos) de líneas de texto. Por el contrario, systemd tenía 1.349.969, o casi 1,4 millones. Con nuestra métrica despreocupada, systemd tiene aproximadamente un 5 por ciento del tamaño del kernel, ¡lo cual es una locura!

  Cómo usar el comando wall en Linux

Como otra comparación, el recuento de líneas para una implementación moderna de System V init para la distribución Arch Linux fue de 1,721 líneas.

Poettering claramente no tiene en cuenta la Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) Computer Society, ni la Interfaz de sistema operativo portátil (POSIX) estándar. De hecho, él animó a los desarrolladores a ignorar POSIX:

“Por lo tanto, obtenga una copia de la Interfaz de programación de Linux, ignore todo lo que dice sobre la compatibilidad con POSIX y elimine su increíble software de Linux. ¡Es un gran alivio! «

Ha habido acusaciones de que systemd es un proyecto de Red Hat que solo beneficia a Red Hat, sin embargo, está siendo forzado al mundo Linux en general. Sí, nació dentro de Red Hat y está gobernado y dirigido por él. Sin embargo, de los 1.321 colaboradores, solo una fracción trabaja para Red Hat.

Entonces, ¿cuáles son los beneficios de Red Hat?

Jim Whitehurst, el presidente de IBM, quien fue una vez que el CEO de Red Hat, dijo:

“Red Hat consideró muchas opciones disponibles e incluso usó Upstart de Canonical para Red Hat Enterprise Linux 6. Al final, elegimos systemd porque es la mejor arquitectura que proporciona la extensibilidad, simplicidad, escalabilidad e interfaces bien definidas para abordar los problemas que vemos hoy y prever en el futuro «.

Whitehurst también dijo que también vieron beneficios en los sistemas integrados. Red Hat se asocia con «los proveedores integrados más grandes del mundo, particularmente en las industrias de telecomunicaciones y automotriz, donde la estabilidad y la confiabilidad son la principal preocupación».

Estas parecen razones técnicamente sólidas. Puede comprender la necesidad de confiabilidad de la empresa y no es descabellado que Red Hat se preocupe por sus propios intereses, pero ¿deberían todos los demás hacer lo mismo?

¿Beber el Kool-Aid systemd?

Algunos oponentes de systemd dicen que las distribuciones y las personas simplemente siguen ciegamente el ejemplo de Red Hat y lo adoptan.

Sin embargo, al igual que la frase, «beber Kool-Aid», no es del todo correcta. Acuñado en 1978 después líder de culto, Jim Jones, obligó a sus más de 900 seguidores a suicidarse bebiendo un líquido con sabor a uva mezclado con cianuro, la frase avergüenza incorrectamente a Kool-Aid. El grupo realmente bebió Flavor Aid, pero Kool-Aid ha sido contaminado por ese cepillo desde entonces.

Además, las distribuciones de Linux no siguen ciegamente a Red Hat; están adoptando systemd después de una seria deliberación. El debate rabió en el Debian listas de correo durante mucho tiempo. Sin embargo, en 2014, la comunidad votó para adoptar systemd como el sistema de inicio predeterminado, sino también para admitir alternativas.

Debian es un ejemplo importante porque no se deriva de RedHat, Fedora o CentOS. No hay ningún steerage aplicado a Debian desde Red Hat. Y Debian, como PID 1, tiene muchos descendientes, incluido Ubuntu y sus muchas derivaciones.

  Cómo jugar Total War: WARHAMMER en Linux

Las decisiones tomadas por la comunidad Debian son de gran alcance. También se debaten enérgicamente y se vota sobre el uso el método de votación Condorcet. La comunidad tampoco toma esas decisiones a la ligera.

Votó de nuevo en diciembre de 2019 seguir enfocándonos en systemd y continuar explorando alternativas. Lo contrario de seguir ciegamente, este es en realidad un ejemplo de libro de texto de democracia y libertad de elección en el trabajo.

Las limitaciones de la elección

Por lo general, no puede elegir si usar systemd con una distribución de Linux en particular. Más bien, las propias distribuciones eligen si quieren usarlo, y usted puede elegir qué distribución de Linux prefiere. Quizás una distribución de Linux que amas haya cambiado a systemd. Como un músico favorito que cambia de género, esto puede resultar discordante.

Las personas que usan Debian, Fedora, CentOS, Ubuntu, Arco, Solusy openSUSE, y se oponen a la adopción de systemd, pueden sentir que están dejando de usar la distribución de su elección. Si se sienten lo suficientemente convencidos acerca de cualquiera de las opciones arquitectónicas, el alcance del alcance o el desprecio por POSIX, es posible que les resulte insostenible seguir usando esa distribución.

Hay un espectro, por supuesto. En un extremo, tienes a las personas que no comprenden los problemas (o ni siquiera les importa), y en el otro, tienes a los objetores apasionados. En algún lugar intermedio están aquellos a los que no les gustan los cambios, pero no les molestan lo suficiente como para abandonar el barco. Pero, ¿qué pasa con los refugiados de distribución, que no pueden permanecer en la distribución elegida debido a sus preferencias o principios?

Desafortunadamente, no es tan fácil como instalar el sistema de inicio que desee. No todo el mundo tiene la capacidad técnica para hacer eso, sin importar las dificultades que surgen cuando las aplicaciones o entornos de escritorio, como GNOME, tienen dependencias en systemd.

¿Qué hay de mudarse a otra distribución? Algo como Devuan, aparecieron como bifurcaciones de distribuciones no pertenecientes a systemd (en este caso, Debian) que habían adoptado systemd. El uso de Devuan debería ser similar a la distribución principal, pero ese no es el caso de todas las bifurcaciones que no son de systemd. Por ejemplo, si deja Fedora y se muda a AntiX, Gentooo Slackware, vas a tener una experiencia muy diferente.

No va a ninguna parte

Me gusta algo de lo que hace systemd (mecanismos de control de procesos simples y estandarizados). No entiendo el fundamento de algunas de sus funciones (registros binarios). También me disgusta algo de lo que hace (renovar las carpetas de inicio, ¿quién pidió eso?).

Distribuciones como Debian están haciendo lo inteligente e investigando alternativas para mantener abiertas sus opciones. Sin embargo, systemd está en él a largo plazo.

Si administra máquinas Linux para otros, aprenda systemd tan bien como conozca System V init. De esta manera, no importa con cuál se encuentre, podrá realizar sus funciones.

¿Solo usa Linux en casa? Si es así, elija una distribución que satisfaga sus necesidades técnicas y complemente su ideología de Linux.