Diferencia entre revisiones de «Descripción del proceso init»

Contenido eliminado Contenido añadido
New page: Titulo: INIT e Introduccion a los RUNLEVELs o Niveles de Ejecucion en Linux. Fecha: Mayo 26 2007. Categoria: Software Libre/Linux El presente documento ilustra y explica el funcionamient...
 
Sin resumen de edición
Línea 13:
 
Desde su primera version y al ser un OS tipo Unix cuando el kernel 'termina' su ejecucion (realmente no lo hace, solo cede el control a un proceso padre [init] aunque continuara ejecutandose, planificando procesos, etc) hace una busqueda de un programa llamado init, mas adelante veremos que es y para que sirve init pero para ir dando un seguimiento correcto mostremos a continuacion lo que ejecuta el kernel para encontrar el ejecutable init.
 
 
 
<pre>
 
 
Definiciones en C para buscar/encontrar init.
Línea 28 ⟶ 33:
773 }
 
----
Donde run_init_process se encuentra definida de esta manera en el mismo fichero.
 
</pre>
 
*Donde run_init_process se encuentra definida de esta manera en el mismo fichero.
 
<pre>
727 static void run_init_process(char *init_filename)
728 {
Línea 36 ⟶ 46:
731 }
 
</pre>
*Donde argv_init se encuentra definida en el mismo fichero y donde se define que el argumento debe = "init".
 
<pre>
184 static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
</pre>
 
Estos segmentos de codigo estan definidos en $KERNELSOURCE/init/main.c (donde $KERNELSOURCE es el arbol de las fuentes ), las lineas a analizar en cuestion son desde 767 -> 770, siendo todo esto basado en el nucleo 2.6.21.1, esas definiciones en C quieren decir basicamente que en este momento el nucleo esta haciendo una busqueda de los posibles lugares donde el proceso init se aloja haciendo llamadas a varias funciones, si la busqueda es efectiva ejecuta el proceso con permisos de super usuario (UID=0) de lo contrario si el kernel no puede encontrar a init el mensaje posterior en la linea 772 es bastante claro en ese sentido. A diferencia de algunas variantes De Unix o BSD Unix, en Linux, init se encuentra siempre en /sbin/init, definido asi por el Linux Filesystem Hierarchy (LFH), un estandar de la distribucion de ejecutables, directorios, etc en un sistema Linux.
Línea 44 ⟶ 56:
 
 
==Stage Post INIT.==
 
Una vez que init es encontrado Linux le cede el control de inicializacion de procesos, los cuales seran descritos todos mas adelante.
Línea 53 ⟶ 65:
A partir de ese momento init toma control de la inicializacion de TODOS los procesos post-kernel, es por eso que init es considerado el padre de todos los procesos, podemos caer en cuenta de esto ejecutando el comando 'pstree', sin comillas y observando desde donde viene cada proceso desde el arbol jerarquico superior. Un fragmento de salida podria ser el siguiente.
 
 
<pre>
init-+-abiword
|-4*[agetty]
Línea 62 ⟶ 76:
| |-bash---man---less
| `-bash---pstree
</pre>
 
Claramente se puede observar desde donde provienen cada uno de los procesos y los procesos ejecutados a traves de otros procesos por ejemplo en este caso la siguiente linea:
Línea 75 ⟶ 90:
Runlevels o Niveles de Ejecucion.
 
==Extractos de la Pagina del Manual.==
 
Un runlevel es una configuracion del sistema que permite solo a un grupo de procesos existir. Los procesos que ha sido expandidos por init para cada runlevel son definidos en /etc/inittab. Init puede estar en uno de 8 runlevels: 0 al 6 y S, s. El runlevel puede ser cambiado corriendo como usuario privilegiado y corriendo el comando telinit, el cual envia senales apropiadas a init, indicandole a que runlevele cambiar.
Línea 302 ⟶ 317:
Referencias Importantes:
 
*man init
*man inittab
*man getty
*man login
*man bash