30.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
.
The
init
command then runs the /etc/inittab
script, which describes how the system should be set up in each SysV init runlevel. Runlevels are a state, or mode, defined by the services listed in the SysV /etc/rc.d/rc<x>.d/
directory, where <x> is the number of the runlevel. For more information on SysV init runlevels, refer to Sección 30.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.
The
init
command first stops all of the K
symbolic links in the directory by issuing the /etc/rc.d/init.d/<command> stop
command, where <command> is the process to be killed. It then starts all of the S
symbolic links by issuing /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 en orden alfabético.
Nota
One of the last things the
init
program executes is the /etc/rc.d/rc.local
file. This file is useful for system customization. Refer to Sección 30.3, “Ejecución de Programas Adicionales durante el Arranque” for more information about using the rc.local
file.
After the
init
command has progressed through the appropriate rc
directory for the runlevel, the /etc/inittab
script forks an /sbin/mingetty
process for each virtual console (login prompt) allocated to the runlevel. Runlevels 2 through 5 have all six virtual consoles, while runlevel 1 (single user mode) has one, and runlevels 0 and 6 have none. The /sbin/mingetty
process opens communication pathways to tty devices[14], sets their modes, prints the login prompt, accepts the user's username and password, and initiates the login process.
En el nivel de ejecución 5, el
/etc/inittab
ejecuta un script denominado /etc/X11/prefdm
. El script prefdm
ejecuta el administrador de visualización X preferido [15] — 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.