Cap�tulo 9. init

Tabla de contenidos

init viene primero
Configurando init para iniciar getty: el archivo /etc/inittab
Niveles de ejecuci�n
Configuraci�n especial en /etc/inittab
Iniciando el sistema en modo de usuario individual

Uuno on numero yksi” (Slogan for a series of Finnish movies.)

En este cap�tulo se describe al proceso init, el cual es el primer proceso a nivel de usuario iniciado por el kernel. init tiene muchos deberes importantes, tales como iniciar getty (para que los usuario puedan ingresar al sistema), implementar niveles de ejecuci�n, y adoptar (take care) procesos hu�rfanos. En este cap�tulo se explica como init es configurado y como utiliza los diferentes niveles de ejecuci�n.

init viene primero

init es uno de esos programas que son absolutamente esenciales para la operaci�n de un sistema GNU/Linux, pero que tal vez pueda ignorar (you still can mostly ignore). Una buena distribuci�n GNU/Linux viene con una configuraci�n para init que trabaja en la mayor�a de los sistemas, por lo que no habr� necesidad de hacer absolutamente nada con respecto a init. Usualmente, solo necesita preocuparse de init si se conecta a trav�s de terminales seriales, modems que auto atiendan llamadas (dial-in, not dial-out), o si desea cambiar el nivel de ejecuci�n por defecto.

Cuando el kernel se inicia a si mismo (es decir, se cargue en memoria, comience a ejecutarse, inicialice todos los controladores de dispositivos y establezca las estructuras de datos necesarias), finaliza sus tareas dentro del proceso de arranque del sistema al momento de iniciar la ejecuci�n de un programa a nivel de usuario llamado init. Por lo tanto, init es siempre el primer proceso en comenzar su ejecuci�n dentro del sistema (su n�mero de proceso es siempre 1).

El kernel busca el archivo binario correspondiente a init en una pocas ubicaciones que fueron hist�ricamente utilizadas para este fin, pero la ubicaci�n correcta para init (en un sistema GNU/Linux) es /sbin/init. Si el kernel no puede encontrar a init, intenta ejecutar /bin/sh, y si esta ejecuci�n tambi�n falla, el inicio del sistema es abortado.

Cuando init comienza su ejecuci�n, finaliza el proceso de arranque del sistema realizando una serie de tareas administrativas. La lista exacta de tareas que init realiza puede variar en distintos sistemas GNU/Linux. De todas maneras, es com�n que init realice el chequeo de los sistemas de archivos, borre el contenido del directorio /tmp, comience la ejecuci�n de varios servicios, e inicie un getty para cada terminal o consola virtual a trav�s de los cuales los usuarios pueden ingresar al sistema (lea el Cap�tulo�10, Entrando y saliendo del sistema para mayor informaci�n).

Despu�s de que el sistema haya iniciado correctamente, init reinicia a getty para cada terminal en la que que un usuario finaliza su sesi�n (para que un pr�ximo usuario pueda ingresar al sistema). init tambi�n adopta procesos hu�rfanos: cuando un proceso inicia un proceso hijo y muere antes que este, el proceso hijo pasa a ser un hijo de init inmediatamente. Esto es importante por varias razones t�cnicas, pero es bueno saberlo, debido a que facilita el entendimiento de la lista de los procesos y los grafos de �rboles de procesos. [26] Existen unas pocas variantes disponibles para init. La mayor�a de las distribuciones GNU/Linux utilizan sysvinit (escrito por Miquel van Smoorenburg), el cual est� basado en el dise�o de init de System V. Las versiones BSD de Unix tienen un init diferente. La principal diferencia se encuentra en los niveles de ejecuci�n: System V los implementa, mientras que BSD no (al menos tradicionalmente). Esta diferencia no es esencial, y nosotros examinaremos a sysvinit �nicamente.



[26] init por si mismo no tiene permitido morir (finalizar su ejecuci�n). No puede matar a init ni a�n con SIGKILL.

mirror server hosted at Truenetwork, Russian Federation.