Provided by: manpages-es_1.55-10_all bug

NOMBRE

       boot-scripts - Descripción general de la secuencia de arranque

DESCRIPCIÓN

       La  secuencia  de arranque varía de un sistema a otro pero se puede dividir básicamente en los siguientes
       pasos: (i) arranque del hardware, (ii) cargador del SO, (iii) puesta en marcha del núcleo,  (iv)  init  e
       inittab, (v) scripts de arranque.  Describiremos cada uno de estos pasos a continuación con más detalle.

   Arranque del hardware
       Después  de pulsar el botón de encendido o el botón reset, se pasa el control a un programa almacenado en
       memoria de sólo lectura (normalmente PROM). En los PC a este programa se le denomina habitualmente BIOS.

       Este programa normalmente hace una comprobación básica de la máquina y accede a memoria no  volátil  para
       leer  parámetros  adicionales.  En  el  PC,  esta  memoria es CMOS con respaldo de batería, por lo que la
       mayoría 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 volátil).

       Los  parámetros  almacenados  en  la memoria nvram varían entre sistemas, pero como mínimo el programa de
       arranque debe saber cuál es  el  dispositivo  de  arranque,  o  qué  dispositivos  probar  como  posibles
       dispositivos de arranque.

       Después  se  accede al dispositivo de arranque, se trae a memoria el cargador del S0, que está localizado
       en una posición fija de este dispositivo y se le transfiere el control a éste.

       Nota:  Aquí no estamos tratando cómo 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 está localizado en el primer sector del dispositivo de arranque - es el
       llamado MBR (Master Boot Record).

       En la mayoría de los sistemas, este cargador primario está  limitado  en  base  a  varias  restricciones.
       Incluso en sistemas que no son PC hay algunas limitaciones al tamaño y complejidad del cargador, así que,
       la limitación de tamaño del MBR en PCs (512 bytes incluyendo la tabla de particiones) hace casi imposible
       introducir un gestor de arranque completo dentro de él.

       Además,  la  mayoría de sistemas operativos hacen que el cargador primario llame a un cargador secundario
       que puede estar localizado en una partición 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 código de arranque  necesario
       para cargar la segunda parte del cargador desde la partición raíz.

       La  principal  tarea  del  gestor  de arranque es localizar el núcleo en disco, cargarlo y ejecutarlo. La
       mayoría de gestores de arranque permiten un uso interactivo, para poder especificar un núcleo alternativo
       (posiblemente una copia de seguridad en caso de que el último núcleo compilado no funcione) y para  pasar
       parámetros opcionales al núcleo.

   Puesta en marcha del núcleo
       Una  vez  que  se carga el núcleo, éste inicializa los dispositivos (a través de sus drivers), arranca el
       intercambiador o swapper (es un "proceso del núcleo", llamado kswapd en los  núcleos  Linux  modernos)  y
       monta el sistema de ficheros raíz (/).

       Algunos de los parámetros que se le pueden pasar al núcleo están relacionados con estas actividades (p.e:
       puede  sobreescribir  el sistema de ficheros raíz por defecto). Para más información sobre los parámetros
       del núcleo Linux lea bootparam(7).

       Sólo después el núcleo crea el primer proceso (en espacio de usuario) al que asigna  el  número  1.  Este
       proceso ejecuta el programa /sbin/init, pasándole cualquier parámetro que no haya podido ser manejado por
       el núcleo.

   Init e inittab
       Cuando  init comienza lee el fichero /etc/inittab para obtener más instrucciones.  Este fichero define lo
       que debería ejecutarse en los diferentes "niveles de ejecución" (run-levels).

       Esto proporciona al administrador del sistema un  sencillo  esquema  de  gestión,  donde  cada  nivel  de
       ejecución  se  asocia  con un conjunto de servicios (p.e.: S es mono-usuario, en el nivel 2 se inician la
       mayoría de servicios de red, etc.). El administrador puede cambiar  el  nivel  de  ejecución  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 descripción se aplica a los sistemas basados en SYSV-R4, que  actualmente  siguen  la
              mayoría  de  los  Unix  comerciales  (Solaris,  HPUX,  Irix, Tru64) así 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  único  script  de  inicialización
       ubicado en un directorio específico (/etc/init.d en la mayoría de versiones de Linux).  Cada uno de estos
       scripts  acepta  como  único  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
       parámetros  de "conveniencia" (p.e: `restart', para parar y arrancar, `status' para mostrar el estado del
       servicio). Ejecutar el script sin parámetros nos mostrará los posibles argumentos.

   Directorios de ejecución en orden
       Para conseguir que ciertos scripts determinados se inicien o se paren en diferentes niveles de  ejecución
       y  en  un orden específico, se crearon los directorios de ejecución en orden. Se encuentran habitualmente
       en /etc/rc[0-6S].d. En cada uno de estos directorios hay enlaces (normalmente simbólicos) 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 través de los enlaces de los directorios de ejecución 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 ejecución, los nombres de los enlaces contienen
       números de orden. Además, para hacer los nombres más claros, éstos 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 ejecución 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 ejecución, 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ón del arranque
       Normalmente,  los demonios lanzados pueden recibir opciones y parámetros en la línea de órdenes de manera
       opcional. Para permitir a los administradores de sistemas cambiar estos parámetros sin editar los scripts
       de arranque por ellos mismos, se utilizan los ficheros de configuración. Éstos están  localizados  en  un
       directorio específico (/etc/sysconfig en sistemas RedHat) y son utilizados por los scripts de arranque.

       En  versiones antiguas de Unix, estos ficheros contenían las opciones de línea de órdenes reales para los
       demonios, pero en sistemas Linux modernos  (y  también  en  HPUX),  estos  ficheros  tan  solo  contienen
       variables  del  intérprete  de  órdenes.  Los  scripts  de arranque en /etc/init.d cargan los ficheros de
       configuración y usar los valores de las variables.

FICHEROS

       /etc/init.d/, /etc/rc[S0-6].d/.  /etc/sysconfig/

VÉASE TAMBIÉN

       inittab(5), bootparam(7), init(8), runlevel(8), shutdown(8)

                                                  7 junio 2002                                           BOOT(7)