La historia detrás de 'init' y 'systemd': por qué era necesario reemplazar 'init' por 'systemd' en Linux
Estoy suscrito a varias listas de correo relacionadas con varias distribuciones y aplicaciones de Linux solo para mantenerme actualizado sobre lo que sucede y dónde. ¿Cuáles son los nuevos errores? ¿Cuáles son los parches lanzados? ¿Qué se espera en la próxima versión? y muchas otras cosas. Hoy en día, la lista de correo está repleta de mensajes "Elija su bando en Linux Divide", principalmente en la lista de correo de Debian junto con algunos otros.
¿De qué se trata “Elige tu bando en Linux Divide”?
El demonio init será reemplazado por el demonio systemd en algunas de las distribuciones de Linux, aunque muchas de ellas ya lo han implementado. Esto está/creará una enorme brecha entre el tradicional Unix/Linux Guard y el nuevo Linux Guard: programadores y administradores de sistemas.
En este artículo, discutiremos y resolveremos todas las consultas una por una.
- ¿Qué es el inicio?
- ¿Qué es systemd?
- ¿Por qué era necesario reemplazar init?
- Qué características poseerá systemd.
¿Que hay en ello?
En Linux, init es una abreviatura de Inicialización. El init es un proceso demonio que se inicia tan pronto como se inicia la computadora y continúa ejecutándose hasta que se apaga. De hecho, init es el primer proceso que se inicia cuando arranca una computadora, lo que lo convierte en el padre de todos los demás procesos en ejecución directa o indirectamente y, por lo tanto, normalmente se le asigna "pid=1".
Si de alguna manera el demonio init no puede iniciarse, no se iniciará ningún proceso y el sistema llegará a una etapa llamada "Kernel Panic". init se conoce más comúnmente como init de System V. System V es el primer sistema operativo UNIX comercial diseñado y los usos de init en la mayoría de las distribuciones de Linux actuales son idénticos al System V OS con algunas excepciones, como Slackware que usa estilo BSD y Gentoo que usa init personalizado. .
La necesidad de reemplazar init con algo más perfecto se sintió desde hace mucho tiempo y de vez en cuando se desarrollaron varias alternativas, algunas de las cuales se convirtieron en el reemplazo nativo de init de la distribución, algunas de las cuales son:
- Upstart: un demonio de reemplazo de inicio implementado en Ubuntu GNU/Linux y diseñado para iniciar el proceso de forma asíncrona.
- Epoch: un demonio de reemplazo de inicio creado en torno a la simplicidad y la gestión de servicios, diseñado para iniciar procesos con un solo subproceso.
- Mudar: un demonio de reemplazo de inicio escrito en Python, implementado en Pardus GNU/Linux y diseñado para iniciar el proceso de forma asíncrona.
- systemd: un demonio de reemplazo de inicio diseñado para iniciar procesos en paralelo, implementado en varias distribuciones estándar: Fedora, OpenSuSE, Arch, RHEL, CentOS, etc.
¿Qué es systemd?
Un systemd es un demonio de administración del sistema nombrado con la convención UNIX para agregar 'd' al final del demonio. Para que puedan ser fácilmente reconocidos. Inicialmente se lanzó bajo la Licencia pública general GNU, pero ahora los lanzamientos se realizan bajo la Licencia pública general reducida GNU. Similar a init, systemd es el padre de todos los demás procesos directa o indirectamente y es el primer proceso que comienza en el arranque, por lo que normalmente se le asigna un "pid=1".
Un systemd puede referirse a todos los paquetes, utilidades y bibliotecas relacionadas con daemon. Fue diseñado para superar las deficiencias de init. En sí mismo es un proceso en segundo plano que está diseñado para iniciar procesos en paralelo, reduciendo así el tiempo de arranque y la sobrecarga computacional. Tiene muchas otras características en comparación con init.
¿Por qué era necesario reemplazar init?
Un proceso de inicio comienza en serie, es decir, una tarea comienza solo después de que el inicio de la última tarea fue exitoso y se cargó en la memoria. Esto a menudo resultaba en un tiempo de arranque prolongado y retrasado. Sin embargo, systemd no fue diseñado para la velocidad sino para hacer las cosas de manera ordenada, lo que a su vez evita todos los retrasos necesarios.
Características del sistema
- Diseño limpio, vanguardista y eficiente.
- Proceso de arranque más sencillo.
- Procesamiento concurrente y paralelo en el arranque.
- Mejor API.
- Sintaxis de unidad simple.
- Posibilidad de eliminar componentes opcionales.
- Huellas de memoria bajas.
- Técnica mejorada para expresar dependencias.
- Instrucción de inicialización escrita en un archivo de configuración y no en un script de shell.
- Utilice el socket de dominio Unix.
- Programación de trabajos utilizando temporizadores de calendario systemd.
- Registro de eventos con diario.
- Elección de registro de eventos del sistema con systemd y syslog.
- Los registros se almacenan en un archivo binario.
- El estado de systemd se puede conservar para poder llamarlo más adelante en el futuro.
- Realice un seguimiento del proceso utilizando el cgroup del kernel y no el PID.
- Inicio de sesión de usuarios gestionado por systemd-logind.
- Mejor integración con Gnome para interoperabilidad.
Sistema de cuellos de botella
- Todo en un solo lugar.
- No es el estándar POSIX.
Integración de Systemd y distribución
- Linux Distribution
Integración
- Fedora
Sí, primera distribución en adoptar systemd
- Arch
Sí
- RedHat
Sí
- CentOS
Sí
- Debian
-
Sí, el nombre en clave de Debian 8 Jessie tendrá systemd por defecto
- Gentoo
Sí, pero debe descargarse, instalarse y configurarse junto con el inicio personalizado.
- OpenSUSE
Sí
- Slack
No (Aunque no se ha adoptado hasta ahora en slackware, Patric Volkerding no ha mostrado ningún indicio de si se adoptará o no)
- Ubuntu
Sí, debe instalarse y configurarse con Upstream.
Controversia
Linus Torvalds, arquitecto jefe del kernel de Linux, considera que la actitud del desarrollador clave de systemd hacia los usuarios y los informes de errores no parece estar bien. También se informó que la filosofía systemd es extraña y una forma extraña de controlar los procesos del sistema. Lo mismo ha sido registrado por Patric Volkerding y otros usuarios y desarrolladores notables de Linux, así como en foros en línea, de vez en cuando.
systemd vs inicio
Features | init | systemd |
DBus Dependency – Mandatory | No | Yes |
Device based Activation | No | Yes |
Device dependency configuration with udev | No | Yes |
Timer based Activation | Cron/at | Proprietary |
Quota Management | No | Yes |
Automatic Service Dependency Handling | No | Yes |
Kills users Process at logout | No | Yes |
Swap Management | No | Yes |
SELinux integration | No | Yes |
Support for Encrypted HDD | No | Yes |
Static kernle module loading | No | Yes |
GUI | No | Yes |
List all the child processes | No | Yes |
Sysv compatible | Yes | Yes |
Interactive booting | No | Yes |
Portable to non x86 | Yes | No |
Adopted on | Several Distro | Several Distro |
Parallel service startup | No | Yes |
Resource limit per service | No | Yes |
Easy extensible startup script | Yes | No |
Separate Code and Configuration File | Yes | No |
Automatic dependency calculation | No | Yes |
Verbose debug | Yes | No |
Version | N/A | V44+ |
Size | 560 KB | N/A |
Number of Files | 75 files | 900 files + glib + DBus |
Lines of code – LOC | 15000 (Approx) | 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code) |
Conclusión
Todo lo que se ejecute como pid=1 no debe romperse, no debe ensuciarse y debe ser controlado por los usuarios de manera efectiva y eficiente. Muchos usuarios creen que reemplazar init por systemd no es más que reinventar la rueda cada vez como efecto secundario de Linux. Pero ésta es la naturaleza diversa de Linux. Esto se debe a que Linux es mucho más poderoso. El cambio es bueno y debemos apreciarlo si es por una buena razón.
Eso es todo por ahora. Estaré aquí nuevamente con otro artículo interesante que a ustedes les encantará leer. Hasta entonces, estad atentos y conectados a Tecmint. No olvide brindarnos sus valiosos comentarios en los comentarios a continuación.