Esta sección es una breve descripción sobre las interioridades del proceso de Arranque. Básicamente cubre en detalle el proceso de arranque de la máquina usando el Sistem V, y las diferencias entre éste 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 demonnios 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ándard del mundo de Linux para manejar la puesta en marcha del software en el momento de 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 subdirectoio se llama
rc.d, y en él puede encontrar el fichero rc.sysinit y
los siguientes directorios:
El directorio init.d contiene una colección de escripts.
Básicamente, se necesita un escript 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 como 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:
Desde este, 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 lo desea cambiar, 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:
Esto debiera permitirle arrancar en la modalidad de monousuario
Ahora, ¿Como hacer para que se ejecuten correctamente todos los escripts?.
Si teclea ls -l en el directorio rc3.d, debería ver algo como
esto:
Como puede observar, no hay ``ficheros'' reales en el directorio. Todo lo
que hay son enlaces a escripts del directorio init.d. Los enlaces
tienen una ``S'' y un número al principio. La ``S'' significa
iniciar este escript 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 el proceso Init para arrancar y parar los servicios? Sencillo.
Cada uno de los escripts se escribe para aceptar un argumento qué puede ser,
``start'' o ``stop''. De hecho, puede ejecutar a mano los escripts, con un
comando como el siguiente:
para parar el servidor httpd. El proceso Init únicamente lee el nombre y
si tiene una ``K'', llama al escript con el argumento ``stop''. Por el
contrario si tiene una ``S'' llama al escript 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 multi-propó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.
Generalmente, Linux Red Hat se ejecuta en el nivel 3---modo multiusuario
completo.
En Linux Red Hat se usan los siguientes niveles de ejecución:
Si su máquina entra en un estado en el qué es imposible arrancar, como
consecuencia de un fichero /etc/inittab defectuoso, o no le permite
registrarse por tener corrupto el fichero /etc/passwd o simplemente
por haber olvidado su contraseña, deberá arrancar con un Modo de usuario
simple, tecleando en el prompt de arranque de LILO, linux 1.
Aparecerá un sistema muy simple, con un intérprete de comandos desde el
que podrá arreglar las cosas.
Para cerrar Linux Red Hat Linux, envíe el siguiente comando
shutdown.
Ud. puede leer la página man de shutdown para completar los detalles, los dos
usos mas comunes son:
Ambos cierran el sistema limpiamente. Después de cerrar todos los procesos,
el primero parará la máquina, y el segundo la reinicia.
Nunca ejecute los comandos reboot o halt directamente si
quiere prevenir daños al sistema de ficheros.
init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
id:3:initdefault:
LILO boot: linux single
lrwxrwxrwx 1 root root 17 3:11 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 3:11 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 14 3:32 S40cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 3:11 S50inet -> ../init.d/inet
lrwxrwxrwx 1 root root 13 3:11 S60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 3:11 S70nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 18 3:11 S90lpd -> ../init.d/lpd.init
lrwxrwxrwx 1 root root 11 3:11 S99local -> ../rc.local
/etc/rc.d/init.d/httpd.init stop
11.5.2 Niveles de ejecución del proceso init
11.5.3 Cerrando el sistema
shutdown -h now
shutdown -r now