systemd tiene 10 años, pero los sentimientos al respecto en la comunidad Linux no se han suavizado; ahora es tan divisivo como siempre. Aún cuando 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 posteriormente (según el tipo de sector de arranque su computadora utiliza) ya sea el Registro de arranque principal (MBR) ejecuta o el Interfase Extensible de Firmware Unificado (UEFI) se ejecuta. La última acción de ambos es encender el Kernel de Linux.
El kernel se carga en la memoria, se descomprime y se inicializa. A sistema de archivos temporales se crea en la RAM, de forma general a través de una utilidad llamada initramfs
o initrd
. Esto posibilita determinar y cargar los controladores necesarios. Esto, a su vez, posibilita que el sistema de archivos de espacio de usuario se cargue y se prepare para determinar el entorno de espacio de usuario.
La creación del entorno de espacio de usuario es manejada por el procedimiento init, que es el primer procedimiento 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 procedimiento init.
Antes systemd
, la corriente principal predeterminada para el procedimiento de inicio era una reelaboración de la 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 de forma directa de System V Unix, el antepasado espiritual de Linux, muchas personas lo consideran como «la forma oficial» de realizar init.
El procedimiento de inicio inicia todos los demonios y los servicios necesarios para que el sistema operativo funcione de manera 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, vigilar los cambios de hardware a medida que inserta o quita dispositivos y administran los inicios de sesión de los usuarios. Como podíamos esperar, el sistema init además incluye funciones para administrar servicios.
Nosotros podemos utilizar ps
para ver el procedimiento que tiene PID 1. Usaremos el f
(listado de formato completo) y p
(PID) opciones:
ps -fp 1
Vemos que el procedimiento con PID 1 es systemd
. Ejecutar el mismo comando en Manjaro Linux produjo un resultado distinto. El procedimiento con PID 1 se identificó como /sbin/init
. Un vistazo rápido a ese archivo muestra que es un link simbólico a systemd
:
ps -fp 1
ls -hl /sbin/init
Usando el ppid
(ID de procedimiento principal) opción con ps
, podemos ver qué procesos han sido lanzados de forma directa por systemd
:
ps -f --ppid 1
Es una lista bastante larga, como puede ver en la imagen de abajo.
Las alternativas
Varios proyectos han intentado producir una alternativa al sistema inicial de System V tradicional. Uno de los principales inconvenientes es que, con System V init, todos los procesos se inician en serie, uno tras otro. Para impulsar la eficiencia de la secuencia de arranque, muchos proyectos alternativos usan el paralelismo para iniciar procesos de forma simultánea y asincrónica.
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 los sistemas Linux. Además 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 distinto funcionalidad y diseño. A pesar de esto, ninguno de ellos creó el furor systemd
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, demonios y servicios, registro y registro en diario, y muchas otras funciones que ya estaban manejadas por módulos dedicados en Linux. La mayor parte de estos no disponen nada que ver con la inicialización del sistema.
Algunos de los demonios proporcionados por systemd
están:
- systemd-udevd: Gestiona dispositivos físicos.
- systemd-logind: Gestiona los inicios de sesión de los usuarios.
- systemd-resuelto: Proporciona resolución de nombres de red para 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.
- mecanizado por sistema: Detecta y monitorea máquinas virtuales y contenedores.
- systemd-nspawn: Puede iniciar un comando u otro procedimiento en un contenedor de espacio de nombres ligero, lo que proporciona una funcionalidad semejante a chroot.
Y eso es solo la punta del iceberg, que además es el meollo del asunto. systemd
Hace mucho que superó lo que se necesita de un sistema de inicio, que, según sus oponentes, es la definición misma de alcance.
«Es muy grande. Hace demasiado «.
Oponentes de systemd
señale la gran y curiosa combinación de funciones que abarca. Todas estas características ya existían en Linux y, tal vez, algunas de ellas necesitaban una actualización o un nuevo enfoque. A pesar de esto, agrupar todas estas funciones en lo que se supone que es un sistema de inicio es arquitectónicamente desconcertante.
systemd
se ha 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. Tiempo systemd
no es estrictamente monolítico (se compone de muchos binarios en lugar de uno enorme), incluye muchas herramientas de administración y comandos dispares bajo un mismo paraguas.
Aunque puede que no sea monolítico, es grande. Para tener una idea de la escala, contamos las líneas de texto en la base de código del kernel 5.6.15 y el systemd
rama maestra 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. A pesar de esto, 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
sale aproximadamente al 5 por ciento del tamaño del kernel, ¡lo cual es una locura!
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. En realidad, él animó a los desarrolladores a ignorar POSIX:
“Por eso, 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, a pesar de esto, se está impulsando al mundo Linux en general. Sí, nació dentro de Red Hat y está gobernado y dirigido por él. A pesar de esto, 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 inclusive usó Upstart de Canonical para Red Hat Enterprise Linux 6. En última instancia, elegimos systemd debido a que 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 además mencionó que además vieron beneficios en los sistemas integrados. Red Hat se asocia con «los proveedores integrados más grandes del mundo, concretamente en las industrias de telecomunicaciones y automotriz, donde la estabilidad y la confiabilidad son la principal preocupación».
Éstas parecen razones técnicamente sólidas. Puede comprender la necesidad de confiabilidad de la compañía 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
comentan que las distribuciones y las personas simplemente siguen ciegamente el ejemplo de Red Hat y lo adoptan.
A pesar de esto, del mismo modo que la frase, «beber el Kool-Aid», eso no es del todo correcto. Acuñado en 1978 después líder de culto, Jim Jones, obligó a sus más de 900 followers a suicidarse bebiendo un líquido con sabor a uva mezclado con cianuro, la frase avergüenza incorrectamente a Kool-Aid. El grupo verdaderamente bebió Flavor Aid, pero Kool-Aid ha sido contaminado por ese cepillo desde entonces.
Al mismo tiempo, 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 por mucho tiempo. A pesar de esto, en 2014, la comunidad votó a favor de adoptar systemd
como el sistema de inicio predeterminado, sino también para admitir alternativas.
Debian es un ejemplo importante debido a que 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 muchos derivados.
Las decisiones tomadas por la comunidad Debian son de gran alcance. Además 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 opuesto a 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 seleccionar si desea utilizar systemd
con una distribución particular de Linux. Más bien, las propias distribuciones eligen si quieren usarlo, y usted puede seleccionar qué distribución de Linux prefiere. Tal vez una distribución de Linux que amas haya cambiado systemd
. Como un músico favorito que cambia de género, esto puede ser discordante.
Las personas que usan Debian, Fedora, CentOS, Ubuntu, Arco, Solus, y openSUSE, y objetar la adopción de systemd
, pueden sentir que están siendo excluidos del uso de la distribución de su elección. Si se sienten lo suficientemente convencidos con relación a cualquiera de las alternativas arquitectónicas, el arrastre del alcance o el desprecio por POSIX, es factible que les resulte insostenible seguir usando esa distribución.
Hay un espectro, decididamente. En un extremo, tienes a las personas que no comprenden los problemas (o que 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 seleccionada debido a sus preferencias o principios?
Desafortunadamente, no es tan simple 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, apareció como nosystemd
bifurcaciones de distribuciones (para este caso, Debian) que habían adoptado systemd
. El uso de Devuan debería ser semejante a la distribución principal, pero ese no es el caso para todas lassystemd
tenedores. A modo de ejemplo, si deja Fedora y se muda a AntiX, Gentoo, o Slackware, vas a tener una experiencia muy distinto.
No va a ninguna parte
Me gusta algo de lo que systemd
hace (mecanismos de control de procesos simples y estandarizados). No entiendo la justificación de algunas de sus funciones (registros binarios). Además 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. A pesar de esto, systemd
está en él a largo plazo.
Si administra máquinas Linux para otros, aprenda systemd
así como conoces el sistema V init. De esta manera, no importa con cuál te encuentres, podrás realizar tus tareas.
¿Solo utiliza Linux en casa? Si es así, elija una distribución que satisfaga sus necesidades técnicas y complemente su ideología de Linux.
RELACIONADO: Systemd cambiará el funcionamiento de su directorio de inicio de Linux