Provided by:
manpages-es_1.55-10_all 
NOMBRE
boot-scripts - Descripcion general de la secuencia de arranque
DESCRIPCI'ON
La secuencia de arranque varia de un sistema a otro pero se puede
dividir basicamente en los siguientes pasos: (i) arranque del hardware,
(ii) cargador del SO, (iii) puesta en marcha del nucleo, (iv) init e
inittab, (v) scripts de arranque. Describiremos cada uno de estos
pasos a continuacion con mas detalle.
Arranque del hardware
Despues de pulsar el boton de encendido o el boton reset, se pasa el
control a un programa almacenado en memoria de solo lectura
(normalmente PROM). En los PC a este programa se le denomina
habitualmente BIOS.
Este programa normalmente hace una comprobacion basica de la maquina y
accede a memoria no volatil para leer parametros adicionales. En el PC,
esta memoria es CMOS con respaldo de bateria, por lo que la mayoria de
la gente se refiere a ella como CMOS, aunque fuera del mundo del PC se
le llama usualmente nvram (non-volatile ram, RAM no volatil).
Los parametros almacenados en la memoria nvram varian entre sistemas,
pero como minimo el programa de arranque debe saber cual es el
dispositivo de arranque, o que dispositivos probar como posibles
dispositivos de arranque.
Despues se accede al dispositivo de arranque, se trae a memoria el
cargador del S0, que esta localizado en una posicion fija de este
dispositivo y se le transfiere el control a este.
Nota: Aqui no estamos tratando como arrancar desde la red. Aquellos
que quieran investigar sobre este tema pueden mirar: DHCP, TFTP,
PXE, Etherboot.
Cargador del S0
En los PC, el cargador del SO esta localizado en el primer sector del
dispositivo de arranque - es el llamado MBR (Master Boot Record).
En la mayoria de los sistemas, este cargador primario esta limitado en
base a varias restricciones. Incluso en sistemas que no son PC hay
algunas limitaciones al tamano y complejidad del cargador, asi que, la
limitacion de tamano del MBR en PCs (512 bytes incluyendo la tabla de
particiones) hace casi imposible introducir un gestor de arranque
completo dentro de el.
Ademas, la mayoria de sistemas operativos hacen que el cargador
primario llame a un cargador secundario que puede estar localizado en
una particion del disco especificada.
En Linux el gestor de arranque es normalmente lilo(8) o grub(8). Ambos
pueden instalarse o bien como cargadores secundarios (donde el MBR
instalado por el DOS apunta a ellos), o como un cargador en dos partes
donde son ellos los que proporcionan un MBR especial que contiene el
codigo de arranque necesario para cargar la segunda parte del cargador
desde la particion raiz.
La principal tarea del gestor de arranque es localizar el nucleo en
disco, cargarlo y ejecutarlo. La mayoria de gestores de arranque
permiten un uso interactivo, para poder especificar un nucleo
alternativo (posiblemente una copia de seguridad en caso de que el
ultimo nucleo compilado no funcione) y para pasar parametros opcionales
al nucleo.
Puesta en marcha del n'ucleo
Una vez que se carga el nucleo, este inicializa los dispositivos (a
traves de sus drivers), arranca el intercambiador o swapper (es un
"proceso del nucleo", llamado kswapd en los nucleos Linux modernos) y
monta el sistema de ficheros raiz (/).
Algunos de los parametros que se le pueden pasar al nucleo estan
relacionados con estas actividades (p.e: puede sobreescribir el sistema
de ficheros raiz por defecto). Para mas informacion sobre los
parametros del nucleo Linux lea bootparam(7).
Solo despues el nucleo crea el primer proceso (en espacio de usuario)
al que asigna el numero 1. Este proceso ejecuta el programa /sbin/init,
pasandole cualquier parametro que no haya podido ser manejado por el
nucleo.
Init e inittab
Cuando init comienza lee el fichero /etc/inittab para obtener mas
instrucciones. Este fichero define lo que deberia ejecutarse en los
diferentes "niveles de ejecucion" (run-levels).
Esto proporciona al administrador del sistema un sencillo esquema de
gestion, donde cada nivel de ejecucion se asocia con un conjunto de
servicios (p.e.: S es mono-usuario, en el nivel 2 se inician la mayoria
de servicios de red, etc.). El administrador puede cambiar el nivel de
ejecucion actual con init(8) y consultarlo con runlevel(8).
Sin embargo, puesto que no es conveniente gestionar los servicios
individuales editando directamente este fichero, inittab solamente
lanza un conjunto de scripts que son los que realmente arrancan/paran
los servicios individuales.
Scripts de arranque
Nota: La siguiente descripcion se aplica a los sistemas basados en
SYSV-R4, que actualmente siguen la mayoria de los Unix
comerciales (Solaris, HPUX, Irix, Tru64) asi como la mayor parte
de las distribuciones Linux (RedHat, Debian, Mandrake, Suse,
Caldera). Algunos sistemas (Slackware Linux, FreeBSD, OpenBSD)
tienen un esquema un tanto diferente de scripts de arranque.
Para cada servicio gestionado (mail, nfs server, cron, etc.) hay un
unico script de inicializacion ubicado en un directorio especifico
(/etc/init.d en la mayoria de versiones de Linux). Cada uno de estos
scripts acepta como unico argumento la palabra `start', que provoca el
arranque del servicio, o la palabra `stop', que provoca que se pare el
servicio. Opcionalmente el script puede aceptar otros parametros de
"conveniencia" (p.e: `restart', para parar y arrancar, `status' para
mostrar el estado del servicio). Ejecutar el script sin parametros nos
mostrara los posibles argumentos.
Directorios de ejecuci'on en orden
Para conseguir que ciertos scripts determinados se inicien o se paren
en diferentes niveles de ejecucion y en un orden especifico, se crearon
los directorios de ejecuci'on en orden. Se encuentran habitualmente en
/etc/rc[0-6S].d. En cada uno de estos directorios hay enlaces
(normalmente simbolicos) a los scripts que se encuentran en el
directorio init.d.
Un script principal (normalmente /etc/rc) es llamado desde inittab(5) y
es el encargado de invocar a los scripts de servicios a traves de los
enlaces de los directorios de ejecucion en orden. Todos los enlaces
cuyo nombre comienza con `S' son invocados con el argumento `start'
(por tanto, iniciando el servicio). Todos los enlaces que comienzan
con `K' son invocados con el argumento `stop' (por tanto, parando el
servicio).
Para establecer el orden dentro de un mismo nivel de ejecucion, los
nombres de los enlaces contienen numeros de orden. Ademas, para hacer
los nombres mas claros, estos terminan habitualmente con el nombre del
servicio al que se refieren. Ejemplo: el enlace /etc/rc2.d/S80sendmail
lanza el servicio sendmail en el nivel de ejecucion 2. Esto ocurre
despues de ejecutar /etc/rc2.d/S12syslog pero antes de ejecutar
/etc/rc2.d/S90xfs.
Para gestionar el orden de arranque y los niveles de ejecucion, tenemos
que manejar estos enlaces. Sin embargo, en muchas versiones de Linux,
hay disponibles herramientas que nos ayudan con esta tarea (p.e:
chkconfig(8)).
Configuraci'on del arranque
Normalmente, los demonios lanzados pueden recibir opciones y parametros
en la linea de ordenes de manera opcional. Para permitir a los
administradores de sistemas cambiar estos parametros sin editar los
scripts de arranque por ellos mismos, se utilizan los ficheros de
configuracion. Estos estan localizados en un directorio especifico
(/etc/sysconfig en sistemas RedHat) y son utilizados por los scripts de
arranque.
En versiones antiguas de Unix, estos ficheros contenian las opciones de
linea de ordenes reales para los demonios, pero en sistemas Linux
modernos (y tambien en HPUX), estos ficheros tan solo contienen
variables del interprete de ordenes. Los scripts de arranque en
/etc/init.d cargan los ficheros de configuracion y usar los valores de
las variables.
FICHEROS
/etc/init.d/, /etc/rc[S0-6].d/. /etc/sysconfig/
V'EASE TAMBI'EN
inittab(5), bootparam(7), init(8), runlevel(8), shutdown(8)
7 junio 2002 BOOT(7)