México: (+52)5585908505, Atención: 9:00 a 18:00 hrs
Cursos y talleres en español de Internet de las Cosas   
   |   

Sistemas Init

Sistemas Init

<< Regresar

Init es uno de los programas esenciales para el funcionamiento del sistema operativo GNU/Linux. Toda distribución de Linux cuenta con una configuración para init que en muchos casos no existe la necesidad de hacer algo al respecto. 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 /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 será 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 la revisión del sistema 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.

Después de que el sistema haya iniciado correctamente, init reinicia a getty para cada terminal en la 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. 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.

Deja un comentario