Todos los archivos relacionados con el arranque
del sistema están ubicados en el directorio
/etc/rc.d
. Aquí tiene la lista de los mismos:
$ ls /etc/rc.d init.d/ rc0.d/ rc2.d/ rc4.d/ rc6.d/ rc.local* rc.sysinit* rc* rc1.d/ rc3.d/ rc5.d/ rc.alsa_default* rc.modules*
Como ya se dijo,
rc.sysinit
es el primer archivo ejecutado por el
sistema. Este es el archivo responsable de poner en su lugar la
configuración básica de la máquina: tipo de teclado, configuración
de ciertos dispositivos, verificación del sistema de archivos,
etc.
Luego se ejecuta el script
rc, con el nivel de ejecución deseado como
argumento. Como hemos visto, el nivel de ejecución es un simple
entero, y para cada nivel de ejecución <x>
definido, debe haber un directorio
rc<x>.d
correspondiente. Entonces, en
una instalación típica de Mandrakelinux, puede ver que están
definidos seis niveles de ejecución:
1: modo monousuario; para ser usado en el caso de serios problemas o para la recuperación del sistema.
2: modo multiusuario, sin soporte para redes;
5: Como 3, pero con la ejecución de la interfaz gráfica de conexión;
Observemos, por ejemplo, el contenido del directorio
rc5.d
:
$ls rc5.d K59dund@ S12syslog@ S20xfs@ S34mDNSResponder@ S90crond@ K59hidd@ S13partmon@ S24messagebus@ S40atd@ S95kheader@ K59pand@ S14hplip@ S25bluetooth@ S56ntpd@ S99local@ S01udev@ S15cups@ S25haldaemon@ S56rawdevices@ S05harddrake@ S15mdadm@ S25netfs@ S75keytable@ S10network@ S17alsa@ S30dm@ S80postfix@ S12pcscd@ S18sound@ S33nifd@ S85numlock@
Como puede ver, todos los archivos de este directorio son vínculos simbólicos, y todos tienen una forma muy específica. Su forma general es:
<S|K><orden><nombre_del_servicio>
La S
significa arrancar (Start) el
servicio, y la K
significa detener
(Kill) el servicio. Los scripts se
ejecutan por número de orden ascendente, y si dos scripts tienen el
mismo número, se aplica el orden alfabético. También podemos ver
que cada vínculo simbólico apunta a scripts ubicados en
/etc/init.d
(excepto
local), script que es responsable de controlar
un servicio específico.
Cuando el sistema entra en un
nivel de ejecución dado, comienza por ejecutar los vínculos
K
en orden: el comando rc
busca donde apunta el vínculo, luego llama al script
correspondiente con un argumento solo: stop
(detener). Luego ejecuta los scripts S
, todavía
usando el mismo método, excepto por el hecho de que los scripts se
llaman con el argumento start
(iniciar).
Por lo tanto, sin mencionar a
todos los scripts, podemos ver que cuando el sistema entra en el
nivel de ejecución 5, primero ejecuta K15dund,
es decir, /etc/init.d/dund stop. Luego
K59hidd, luego K59pand, etc.,
hasta que ejecutó el último comando. Acto seguido, ejecuta todos
los scripts S
: primero
S01udev, que invoca a /etc/init.d/udev
start, y así sucesivamente.
Armado con toda esta información, Usted puede crear su propio nivel de ejecución completo en pocos minutos (por ejemplo, usando el nivel de ejecución 4), o evitar el arranque o la detención de un servicio borrando el vínculo simbólico correspondiente. También puede usar una cantidad de programas que son una interfaz para hacer esto, en particular drakxservices (consulte DrakXServices: Configurando los servicios al arranque en Guía de comienzo) que usa una interfaz gráfica, o chkconfig para la configuración de modo texto.