Esta sección es una breve descripción sobre las interioridades del proceso de arranque. Básicamente describe en detalle el proceso de arranque de la máquina usando el Sistem V, y las diferencias entre éste y el proceso init original de las antiguas versiones de Linux.
El proceso Init es un programa que el núcleo ejecuta cuando arranca el sistema. Se encarga de inicializar todos los procesos normales que se necesiten ejecutar en el momento de arrancar; incluyendo los terminales que le permiten acceder al sistema, los servicios NFS, FTP, y cualquier proceso que quiera ejecutar cuando su máquina arranque.
El proceso Init del SysV (Sistema V) se está convirtiendo rápidamente en el estándar del mundo de Linux para manejar la puesta en marcha del software en el momento del arranque. Esto se debe a que es más facil su uso, y más potente y flexible, que el proceso Init del tradicional BSD. El proceso Init del SysV también difiere del BSD en que los ficheros de configuración se localizan dentro de un subdirectorio de /etc en lugar de estar directamente en /etc. Este subdirectorio se llama rc.d. En él puede encontrar el fichero rc.sysinit y los siguientes directorios:
117#117
El directorio init.d contiene una colección de guiones. Básicamente, se necesita un guión por cada servicio que pueda necesitar inicializar en el momento de arranque o cuando entra en otro nivel de ejecución. Los servicios incluyen procesos como networking, nfs, sendmail, httpd, etc. Los servicios no incluyen procesos como el de inicialización de los puertos serie, que únicamente se ejecuta una vez y finaliza. Procesos como este deberían estar en rc.local o en rc.serial.
Si desea un rc.local, debería localizarse en /etc/rc.d. La mayoría de los sistemas incluyen uno aunque no haga mucho. Puede incluir un rc.serial en /etc/rc.d si necesita realizar algo específico con el puerto serie en el momento de arrancar.
Veamos cómo es la sucesión de eventos:
El nivel de ejecución por defecto se decide en /etc/inittab. Debe tener una linea al principo del fichero parecida a:
118#118
>Se puede ver en la segunda columna que por defecto el nivel de ejecución será el 3, como debiera ser el caso en la mayoría de sistemas. Si desea cambiarlo, tiene que editar /etc/inittab y modificar el 3. Tenga cuidado cuando manipule el fichero inittab. Si lo echa a perder, puede arreglarlo si rearranca y hace:
119#119
Esto debiera permitirle arrancar en modo monousuario y reparar inittab.
Ahora, ¿Como hacer para que se ejecuten correctamente todos los guiones?. Si teclea ls -l en el directorio rc3.d, debería ver algo como esto:
120#120
Como puede observar, no hay ``ficheros'' reales en el directorio. Todo lo que hay son enlaces a guiones del directorio init.d. Los enlaces tienen una ``S'' y un número al principio. La ``S'' significa iniciar este guión particular y la ``K'' significaría pararlo. El número únicamente tiene el propósito de establecer el orden de ejecución. EL proceso init arrancará todos los servicios en el orden en el que se encuentran. Puede duplicar los números, pero con esto sólo provocará mayor confusión. Necesita únicamente usar un número de dos dígitos, precedido de una ``S'' o una ``K'' en mayúsculas para iniciar o parar el servicio que se necesite.
¿Como hace init para arrancar y parar los servicios? Sencillo. Cada uno de los guiones se escribe para aceptar un argumento que puede ser ``start'' o ``stop''. De hecho, puede ejecutar a mano los guiones, con una orden como la siguiente:
121#121
para parar el servidor httpd. Init únicamente lee el nombre y si tiene una ``K'', llama al guión con el argumento ``stop''. Por el contrario si tiene una ``S'' llama al guión con el argumento ``start''.
¿Por qué existen todos estos niveles de ejecución.? Algunas personas necesitan una forma sencilla para configurar las máquinas con carácter multipropósito. Podría tener por un lado, un nivel de ejecución de ``servidor'' que tan sólo ejecutara httpd, sendmail, networking, etc. Y por otro, tener un nivel de ejecución de ``usuario'' ejecutando xdm, networking, etc.