Linux Preview

Hace 4 años

Systemd – Lo que usted necesita saber

systemd-featured


A menos que hayas estado viviendo bajo una roca, o peor no se preocupan mucho acerca de cómo funciona Linux, usted debe haber oído hablar de systemd, el (relativamente) nuevo sistema que remplazará el viejo y anticuado sistema init  SysV init aprobado recientemente por la mayoría de importante distros Linux.

¿Qué es un sistema de inicio?

Cuando su máquina Linux se inicia primero ejecutar algún código «built-in», cargado de la BIOS o UEFI, seguido por el gestor de arranque, que de acuerdo a su configuración carga un kernel de Linux. Las cargas del núcleo hasta los drivers, y como su primer trabajo se inicia el proceso init, que es el primero que obtiene PID 1 (identificador de proceso)  asignado.

Desde el punto de vista del usuario esto se parece a la puesta en marcha de redes y bases de datos, etc., pero en realidad no es un proceso bastante complejo que tiene lugar bajo el capó. Los servicios son iniciados, detenidos y reiniciados, a menudo paralelas entre sí. Algunos se ejecutan en diferentes privilegios que otros, se están reportando estados de servicio y se registran, y muchas otras tareas se realizan que hacen los diferentes parte de su sistema de trabajo y ser capaz de interactuar con sus usuarios y el medio ambiente.

systemd-linux-boot

El viejo sistema de inicio

El sistema de inicio utilizado por la mayoría de distros dominante en Linux hasta hace poco era System V init (o SysV init), lo que ha derivado su nombre del formulario UNIX System V (pronunciado «System Five»), el primer sistema UNIX disponible en el mercado. System V OS ha tenido una manera específica para ejecutar su proceso init, y SysV init se ha mantenido fiel a este paso de los años.

.

systemd-sysvinit

La necesidad de un cambio

Como se ha observado, init SysV ha sido anticuado y desde hace mucho tiempo debía ser reemplazado. Algunas de las razones para esto son:

  • SysV init utiliza /sbin/init para iniciar el proceso init, pero init en sí tiene un papel muy limitado. init no hace más que comenzar /etc/init.d/rc, de acuerdo con la configuración read de /etc/inittab, que a su vez ejecutar secuencias de comandos para hacer el trabajo real del proceso init. Esto, a menos panelizado explícitamente (como con startpar en Debian), sucederá de forma secuencial, una secuencia de comandos de partida después de la otra, por lo que todo el proceso es lento, ya que cada guión tiene que esperar a que la anterior termine.
  • SysV init no tiene acceso a la PID o los procesos que tiene (indirectamente) iniciados. Sólo lee los PID y los asocia con los procesos reales de una manera circunstancial, complicado.
  • Para los administradores de sistemas que tratan de modificar el entorno bajo el cual se iniciaría un proceso determinado, es bastante difícil con SysV init. (A fin de lograr este tendrán que modificar el strcipt init que es responsable para iniciar el proceso dado.)
  • Hay cierta funcionalidad común a todos los servicios que SysV no implementa, pero cada proceso tendría que poner en práctica en sí en cambio, como «daemonising» a sí mismos (convertirse en un demonio del sistema), que es un proceso complejo y largo. En lugar de la aplicación de estas medidas una vez, SysV requiere cada proceso para hacer el trabajo ellos mismos.
  • SysV también deja cierta funcionalidad a los programas externos y no sabe nada acerca de los servicios iniciados por aquellos.

Introducción systemd

Hubo muchos intentos para crear un sistema de inicio alternativo, de los cuales systemd es sólo uno de ellos. Ubuntu utiliza para ejecutar su propio sistema init llamado upstart. Gentoo sigue utilizando OpenRC. Otros sistemas incluyen init initng, busyboxinit, runit y Mudur y otros.

La razón de que systemd sea un ganador claro es que ha sido adoptado por la mayoría de las distribuciones principales. BSR y CentOS fueron, naturalmente, la forma systemd, como Fedora fue la primera distro para adoptar oficialmente systemd en 2011. Pero systemd se ha convertido en realidad en el sistema de un solo init para gobernarlos a todos, cuando Debian 8 cambió oficialmente a systemd, con lo que Ubuntu y derivados lo hicieron , la superación de Canonical (o más precisamente de Mark Shuttleworth) fue la oposición inicial hacia systemd.

¿Cómo es de diferente systemd?

  • Systemd tiene como objetivo proporcionar una única manera, centralizada para manejar el proceso de inicio de principio a fin.
  • Se inicia y detiene los procesos y servicios, mientras que el seguimiento de sus dependencias. Se puede incluso comenzar un proceso como una respuesta a otro proceso requisito de dependencia.
  • Además de iniciar y detener los procesos durante el arranque, Systemd también puede comenzar en cualquier momento cuando el sistema está en respuesta a ciertos eventos de disparo, como cuando un dispositivo está enchufado.
  • Tampoco requiere procesos para sí mismos en demonio. A diferencia de SysV init, systemd puede manejar los servicios en funcionamiento sin tener que pasar por el largo proceso de convertirse en demonios.

Controversia

Por supuesto systemd no fue bien recibida por todos. De hecho, muchos tienen y todavía lo hacen fruncir el ceño en ella, llamándola monolítica y engorroso, algunos incluso acusándolo de ir al «en el camino de windows» de tener todo centralizado. Muchos argumentan que no es «el camino de Linux«, y ciertamente systemd no parece estar de acuerdo con los estándares POSIX, y si tenemos en cuenta systemd como un conjunto de herramientas (más allá de sólo el binario), es sin duda hugae.

Sin embargo, systemd es claramente un paso adelante, y aunque no es perfecto, muchas de las críticas que ha recibido ha sido abordada por su autor original y desarrollador Lennart Poettering. Definitivamente es un avance muy necesario y un paso adelante respecto al antiguo sistema init. Linus Torvalds, creador de Linux, no parece importarle systemd demasiado, y quiénes somos nosotros para discutir con «El Creador».

 

Más información en: maketecheasier.com





Comentar con Facebook