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)