El papel principal de un sistema init es iniciar y detener procesos esenciales. Linux ha visto tres implementaciones principales de init: System V, Upstart y systemd. Esta lección se centra en la versión más tradicional, System V init, a menudo denominada SysV o simplemente systemv (pronunciado 'System Five').
Para determinar si su sistema utiliza la implementación systemv, busque un archivo /etc/inittab. Si este archivo existe, lo más probable es que esté ejecutando una distribución basada en SysV.
Cómo System V Gestiona los Procesos
El proceso systemv init inicia y detiene los servicios secuencialmente. Por ejemplo, si un servicio llamado foo-b depende de foo-a, foo-b no puede iniciarse hasta que foo-a se esté ejecutando completamente. El sistema initv logra esto utilizando scripts de shell. Estos scripts, ubicados en directorios específicos, se encargan de iniciar y detener los servicios. Si bien puede escribir scripts personalizados, la mayoría de los sistemas dependen de los preinstalados que gestionan los servicios esenciales del sistema operativo.
Ventajas y Desventajas
La principal ventaja de este enfoque secuencial es su simplicidad y previsibilidad. Solucionar problemas de dependencias es sencillo porque sabe que foo-a siempre comienza antes que foo-b. Sin embargo, el principal inconveniente del modelo init v es el rendimiento, ya que los servicios generalmente se inician uno a la vez, lo que resulta en tiempos de arranque más lentos en comparación con los sistemas paralelos modernos.
Comprensión de los Niveles de Ejecución en System V
En un entorno systemv, el estado de la máquina se define mediante niveles de ejecución (runlevels), numerados del 0 al 6. Estos modos pueden variar ligeramente entre las distribuciones de Linux, pero generalmente siguen esta convención estándar:
- 0: Apagado (Shutdown)
- 1: Modo de usuario único (Single User Mode)
- 2: Modo multiusuario sin red
- 3: Modo multiusuario con red
- 4: No utilizado
- 5: Modo multiusuario con red e interfaz gráfica (GUI)
- 6: Reinicio (Reboot)
Scripts de Init y Directorios
Cuando su sistema arranca, comprueba su nivel de ejecución configurado y ejecuta los scripts correspondientes. Estos scripts se encuentran típicamente en directorios como /etc/rc.d/rc[runlevel].d/ o dentro de un directorio central /etc/init.d. Los scripts que comienzan con S (Start/Inicio) se ejecutan durante el arranque, mientras que los que comienzan con K (Kill/Matar) se ejecutan durante el apagado. Los números que siguen a S o K dictan el orden de ejecución.
Por ejemplo:
pete@icebox:/etc/rc.d/rc0.d$ ls
K10updates K80openvpn
En este ejemplo, al cambiar al nivel de ejecución 0 (apagado), primero se ejecutará el script para detener el servicio de actualizaciones, seguido del script para OpenVPN. Puede encontrar el nivel de ejecución predeterminado de su máquina en el archivo /etc/inittab, donde también puede cambiarlo.
Es importante señalar que System V ha sido ampliamente reemplazado por systemd en la mayoría de las distribuciones modernas de Linux. Sin embargo, es posible que todavía encuentre el concepto de niveles de ejecución en los sistemas init más nuevos, ya que a menudo proporcionan una capa de compatibilidad para admitir servicios heredados que dependen de los scripts de systemv init.