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)

Powered by the Ubuntu Manpage Repository generator
Maintained by Dustin Kirkland