Como hemos aprendido, el proceso init es el primer proceso que se ejecuta durante el proceso de arranque de Linux. Es el padre de todos los demás procesos y es responsable de iniciar los servicios esenciales que ponen su sistema en un estado utilizable. ¿Pero cómo lo logra?
Existen tres implementaciones principales del sistema init de Linux, cada una con un enfoque diferente para la gestión de servicios.
System V Init
System V init, a menudo llamado sysvinit, es el sistema init tradicional para Linux. Sigue un procedimiento de arranque secuencial definido por scripts. El estado del sistema se gestiona a través de niveles de ejecución (runlevels), donde cada nivel de ejecución (por ejemplo, modo de un solo usuario, modo multiusuario con red) tiene un conjunto específico de servicios para iniciar o detener. Este fue el estándar durante mucho tiempo en el proceso de arranque clásico de Linux.
Upstart
Encontrado en versiones antiguas de Ubuntu, Upstart es un sistema init basado en eventos. Se alejó del estricto modelo secuencial de System V. En su lugar, Upstart inicia y detiene servicios (llamados trabajos o jobs) en respuesta a eventos del sistema, como la disponibilidad de un dispositivo de red. Esto permite tiempos de arranque más flexibles y rápidos.
systemd
El estándar moderno para el sistema init de Linux es systemd. Es un sistema orientado a objetivos que gestiona las dependencias de forma agresiva. En lugar de simplemente iniciar una lista de servicios, usted define un estado objetivo (como una interfaz gráfica), y systemd trabaja para satisfacer todas las dependencias de ese objetivo, iniciando servicios en paralelo para acelerar significativamente el proceso de arranque.
Tenemos un curso completo sobre sistemas Init donde profundizaremos en cada uno de estos sistemas en más detalle.