Tabla de contenidos
“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 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.