F.2.4. Programa /sbin/init
El programa
/sbin/init (también llamado init) coordina el resto del proceso de arranque y configura el entorno del usuario.
Cuando el comando
init arranca, se vuelve el padre o abuelo de todos los procesos que comienzan automáticamente en el sistema. Primero, ejecuta el script /etc/rc.d/rc.sysinit, que establece la ruta del entorno, activa el swap, verifica los sistemas de archivos y se encarga de todo lo que el sistema necesita al momento de la inicialización. Por ejemplo, la mayoría de los sistemas usan un reloj, por lo tanto, el rc.sysinit lee el archivo de configuración /etc/sysconfig/clock para iniciar el hardware del reloj. Otro ejemplo es si hay procesos especiales en los puertos seriales que deben ser inicializados, rc.sysinit ejecutará el archivo /etc/rc.serial.
Luego, el comando
init procesa los trabajos en el directorio /etc/event.d, que describe cómo el sistema debe configurarse en cada nivel de ejecución SysV. Los niveles de ejecución son un estado o modo definido por los servicios enumerados en el directorio SysV /etc/rc.d/rc<x>.d/, en donde <x> es el número de nivel de ejecución. Para obtener más información sobre los niveles de ejecución de SysV vaya a la Sección F.4, “Niveles de ejecución de SysV Init”.
A continuación, el comando
init configura la biblioteca de funciones fuente, /etc/rc.d/init.d/functions, para el sistema, que establece el modo en de iniciar o matar un programa y la forma para determinar el PID de un programa.
El programa
init inicia todos los procesos de fondo buscando en el directorio apropiado rc para el nivel de ejecución especificado por defecto en /etc/inittab. Los directorios rc se encuentran numerados para corresponder al nivel de ejecución que representan. Por ejemplo, /etc/rc.d/rc5.d/ es el directorio para el nivel de ejecución 5.
Cuando se arranca el nivel de ejecución 5, el programa
init consulta el directorio /etc/rc.d/rc5.d/ para determinar qué procesos iniciar o parar.
A continuación un ejemplo de listado del directorio
/etc/rc.d/rc5.d/:
Como puede ver, ninguno de los scripts que inician y detienen los servicios están localizados en el directorio
/etc/rc.d/rc5.d/. Casi todos los archivos en /etc/rc.d/rc5.d/ son enlaces simbólicos apuntando a los scripts localizados en el directorio /etc/rc.d/init.d/. Los enlaces simbólicos se usan en cada uno de los directorios rc de manera que los niveles de ejecución se puedan reconfigurar al crear, modificar y eliminar los enlaces simbólicos sin que afecte a los scripts actuales a los que se refiere.
El nombre de cada enlace simbólico comienza con
K o S. Los enlaces K son procesos eliminados en ese nivel de ejecución, mientras que aquellos que inician por S son procesos a iniciar.
El comando
init en primer lugar detiene todos los enlaces simbólicos de K en el directorio mediante el comando /etc/rc.d/init.d/<command> stop, en el que <command> es el proceso a matar. Luego inicia todos los enlaces simbólicos S ejecutando /etc/rc.d/init.d/<command> start.
Nota
Después de que el sistema ha terminado de arrancar, es posible iniciar una sesión como usuario root y ejecutar estos mismos scripts para dar inicio y parar servicios. Por ejemplo, el comando
/etc/rc.d/init.d/httpd stop detiene el Servidor HTTP de Apache.
Cada uno de los enlaces simbólicos se numera para dictaminar el orden de inicio. Usted puede cambiar el orden en el que los servicios inician o paran al cambiar este número. Mientras más bajo es el número, más rápido se arrancará. Los enlaces simbólicos con el mismo número se inician de modo alfabético.
Nota
Una de la últimas cosas que el programa
init ejecuta es el archivo /etc/rc.d/rc.local. Este archivo es útil para la personalización del sistema. Para obtener más información sobre cómo utilizar el archivo rc.local, consulte la Sección F.3, “Ejecutar programas adicionales en el tiempo de arranque ”.
Después de que el comando
init haya progresado a través del directorio rc apropiado para el nivel de ejecución, Upstart inicia un proceso /sbin/mingetty para cada consola virtual (indicador de inicio de sesión) asignada al nivel de ejecución por la definición de tarea en el directorio /etc/event.d. Los niveles de ejecución del 2 al 5 tienen todos seis consolas virtuales, mientras que el nivel de ejecución 1 (modo de monousuario) tiene una, y los niveles de ejecución 0 y 6 no tienen ninguna. El proceso /sbin/mingetty abre las rutas de comunicación para dispositivos tty [16], establece sus modos, imprime el proceso de inicio de sesión, acepta el nombre y contraseña de usuario y comienza el proceso de inicio de sesión.
En el nivel de ejecución 5, Upstart ejecuta un script denominado
/etc/X11/prefdm. El script prefdm ejecuta el gestor de pantalla X[17] — gdm, kdm, o xdm, dependiendo del contenido del archivo /etc/sysconfig/desktop.
Una vez que haya terminado, el sistema operará en el nivel de ejecución 5 y mostrará la pantalla de inicio de sesión.