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

NOMBRE

       initrd - disco-RAM inicializado por el gestor de arranque

DESCRIPCIÓN

       El  fichero  especial  /dev/initrd  es  un  dispositivo  de  bloques  de sólo lectura.  El
       dispositivo /dev/initrd es un disco RAM que es inicializado (es  decir,  cargado)  por  el
       gestor  de arranque antes de cargar e iniciar el núcleo del sistema.  Así, el núcleo puede
       utilizar el contenido del dispositivo /dev/initrd para un  arranque  del  sistema  en  dos
       fases.

       En  la  primera fase del arranque, el núcleo pone en marcha y monta un sistema de ficheros
       raíz inicial a partir del contenido de /dev/initrd (o sea, el disco-RAM  inicializado  por
       el  gestor  de arranque).  En la segunda fase, se cargan controladores adicionales u otros
       módulos desde el  contenido  del  dispositivo  raíz  inicial.   Tras  cargar  los  módulos
       adicionales,  se monta un nuevo sistema de ficheros raíz (es decir, el sistema de ficheros
       raíz habitual) desde un dispositivo diferente.

FUNCIONAMIENTO DEL ARRANQUE

       Cuando se arranca el sistema con initrd, ocurre lo siguiente:

         1. El gestor de arranque ('boot loader') carga el núcleo y el contenido  de  /dev/initrd
         en memoria.

         2.  En  la  puesta en marcha del núcleo, éste descomprime y copia el contenido del disp.
         /dev/initrd en el dispositivo /dev/ram0 y a continuación libera la memoria utilizada por
         /dev/initrd.

         3. Seguidamente, el núcleo monta el dispositivo /dev/ram0 en modo lectura/escritura como
         el sistema de ficheros raíz inicial.

         4. Si el sistema de ficheros raíz habitual indicado coincide con el sistema de  ficheros
         raíz  inicial  (por ejemplo, /dev/ram0 ) entonces el núcleo salta directamente al último
         paso para la secuencia de arranque habitual.

         5. Si el fichero ejecutable /linuxrc está  presente  en  el  sistema  de  ficheros  raíz
         inicial,  se  ejecuta  con  uid (identificador de usuario) 0.  (El fichero /linuxrc debe
         tener permiso de ejecución.  El fichero /linuxrc puede ser cualquier ejecutable  válido,
         incluyendo los guiones de cualquier procesador de órdenes -'shell scripts'.)

         6.  Si no se ejecuta /linuxrc o cuando /linuxrc termina, se monta el sistema de ficheros
         raíz habitual.  (Si /linuxrc termina con algún sistema de ficheros montado  en  el  raíz
         inicial,  entonces  el  comportamiento  del  núcleo  es  INDETERMINADO.  (Vea la sección
         OBSERVACIONES para consultar el comportamiento actual del núcleo.)

         7. Si el sistema de ficheros 'habitual' contiene el directorio /initrd,  el  dispositivo
         /dev/ram0 se mueve desde / a /initrd.  En otro caso, si el directorio /initrd no existe,
         el dispositivo /dev/ram0 se desmonta.  (Cuando es movido desde / a /initrd, /dev/ram0 no
         se desmonta, y por tanto los procesos pueden permanecer funcionando desde /dev/ram0.  Si
         el directorio /initrd no existe en el sistema de ficheros raíz habitual  y  queda  algún
         proceso en funcionamiento sobre /dev/ram0 cuando /linuxrc termina, el comportamiento del
         núcleo  es  INDETERMINADO.   Vea  la  sección  de  OBSERVACIONES   para   consultar   el
         comportamiento actual del núcleo.)

         8. La secuencia de arranque/inicio habitual (por ejemplo, la ejecución de /sbin/init) se
         realiza en el sistema de ficheros habitual.

OPCIONES

       Las siguientes opciones del gestor de arranque, cuando se utilizan con initrd, alteran  el
       proceso de puesta en marcha del núcleo:

       initrd=nombre_de_fichero
              Especifica el fichero a cargar como el contenido de /dev/initrd.  Para LOADLIN esta
              es una opción de línea de órdenes.  Para LILO tiene que utilizar este orden  en  el
              fichero  de configuración de LILO, /etc/lilo.config.  El nombre de fichero indicado
              con esta opción será normalmente una imagen del sistema de ficheros comprimida  con
              GZip.

       noinitrd
              Esta  opción  de  arranque  deshabilita  la operación de arranque en dos fases.  El
              núcleo realiza la secuencia de arranque habitual como  si  /dev/initrd  no  hubiera
              sido  inicializado.  Con esta opción, cualquier contenido de /dev/initrd cargado en
              la memoria por el 'boot loader' es preservado.  Esta opción permite que /dev/initrd
              contenga  cualquier  clase  de  datos  y  no esté limitado a una imagen de sist. de
              ficheros.  De todas formas, el dispositivo /dev/initrd es de sólo-lectura  y  puede
              ser leído sólo una vez tras la puesta en marcha del sistema.

       root=nombre-de-dispositivo
              Especifica  el  dispositivo  que  será  utilizado  como  sistema de ficheros normal
              (raíz).  Para LOADLIN esta es una opción de línea de órdenes.  Para  LILO  esta  es
              una  opción  para el momento de arranque o puede utilizarse como línea de opción en
              el fichero de configuración de LILO, /etc/lilo.config.  El dispositivo indicado por
              la  opción  debe  ser  un dispositivo 'montable', y contener un sistema de ficheros
              raíz adecuado.

CAMBIAR EL SISTEMA DE FICHEROS RAÍZ HABITUAL

       Por defecto, las opciones establecidas del núcleo (p. ej. establecidas en el  fichero  del
       núcleo  mediante rdev o compiladas dentro del mismo), o el establecimiento de opciones del
       'boot loader' se utiliza para los sistemas de ficheros normales.  Para un sistema de fich.
       raíz  montado  como  NFS,  debemos  utilizar  las  opciones  de  arranque  nfs_root_name y
       nfs_root_addrs para proporcionar/establecer las opciones de  NFS.   Para  más  información
       sobre  sistemas  raíz  montados  como  NFS,  vea  el  fichero  de documentación del núcleo
       nfsroot.txt.  Para más información sobre el establecimiento del sistema de ficheros  raíz,
       vea también la doc. de LILO y LOADLIN.

       También es posible para el ejecutable de /linuxrc cambiar el dispositivo raíz por defecto.
       Para que /linuxrc cambie este dispositivo, /proc debe ser  montado.   Tras  montar  /proc,
       /linuxrc  cambia el disp. raíz habitual escribiendo en los ficheros /proc/sys/kernel/real-
       root-dev,  /proc/sys/kernel/nfs-root-name,  y  /proc/sys/kernel/nfs-root-addrs.   Para  un
       dispositivo  raíz  físico, éste se cambia haciendo que /linuxrc escriba el nuevo número de
       sistema de ficheros en /proc/sys/kernel/real-root-dev.  Para un sistema raíz NFS, el disp.
       raíz  se  cambia  haciendo  que  /linuxrc  escriba  la  opción  de  NFS  en  los  ficheros
       /proc/sys/kernel/nfs-root-name y /proc/sys/kernel/nfs-root-addrs y  después  escriba  0xff
       (p.ej.  el número de pseudo-dispositivo-NFS) en el fichero /proc/sys/kernel/real-root-dev.
       Por ejemplo, la siguiente línea de órdenes del shell cambiaría el disp. raíz a /dev/hdb1:
               echo 0x365 >/proc/sys/kernel/real-root-dev
       Como ejemplo para sistemas NFS, las siguientes líneas de órdenes cambiarían el dispositivo
       raíz  al directorio NFS /var/nfsroot en un servidor NFS local con dirección IP 193.8.232.7
       para un sistema con dirección 193.8.232.7 llamado 'idefix':
            echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
            echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \
              >/proc/sys/kernel/nfs-root-addrs
            echo 255 >/proc/sys/kernel/real-root-dev

UTILIZACIÓN

       La principal motivación para implementar initrd  fue  la  de  permitir  una  configuración
       modular del núcleo en el momento de la instalación.

       Aquí se describe un posible escenario de la instalación del sistema:

         1.  El programa cargador arranca desde disquete u otro medio con un núcleo mínimo (p.ej.
         con soporte para  /dev/ram,  /dev/initrd,  y  el  sistema  de  ficheros  ext2)  y  carga
         /dev/initrd con una versión comprimida (con gzip) del sistema de ficheros inicial.

         2. El ejecutable /linuxrc determina lo que se necesita para montar, mount(1), el sistema
         de ficheros raíz normal (p.ej. tipo de dispositivo, controladores, sistema de  ficheros)
         y  (2) el formato 'de distribución' (p.ej. CD-ROM, red, cinta, ...). Esto se puede hacer
         preguntando al usuario, tanteando/probando automáticamente, o mediante una  aproximación
         mixta.

         3.  El  ejecutable  /linuxrc  carga  los módulos necesarios desde el sistema de ficheros
         inicial.

         4. El ejecutable /linuxrc crea y 'expande' el sistema de ficheros raíz. (En esta  etapa,
         el sistema raíz no tiene por qué ser aún un sistema completo.)

         5.  El  ejecutable /linuxrc establece /proc/sys/kernel/real-root-dev, desmonta /proc, el
         sistema de ficheros raíz y cualquier otro sist.  de  ficheros  que  hubiese  montado,  y
         entonces termina.

         6. El núcleo entonces monta el sistema de ficheros definitivo.

         7.  Ahora que el sist. de ficheros está accesible e intacto, el gestor de arranque puede
         ser instalado.

         8. El gestor de arranque está configurado para cargarse en /dev/initrd,  un  sistema  de
         ficheros  con  el conjunto de módulos que fue utilizado para poner en marcha el sistema.
         (p.ej. El dispositivo /dev/ram0 puede ser modificado, después desmontado, y  finalmente,
         la imagen es escrita desde /dev/ram0 a un fichero.)

         9.  El  sistema  es  ahora  capaz  de  arrancar, y se pueden abordar nuevas tareas de la
         instalación.

       El papel clave de /dev/initrd en el proceso es el de reutilizar los datos de configuración
       durante  el  funcionamiento habitual del sistema sin que se requiera una selección inicial
       del núcleo, o un núcleo genérico demasiado grande, o recompilarlo.

       Un segundo escenario se presenta para instalaciones en las que Linux corre en sistemas con
       diferentes  configuraciones  'hardware'  en  una  misma  red.   En  estos casos, puede ser
       deseable utilizar sólo un pequeño conjunto de núcleos  (idealmente,  uno)  y  mantener  la
       parte  específica  de  la  configuración de cada sistema tan pequeña como sea posible.  En
       este caso, se crea un fichero común con todos los módulos requeridos.  Entonces,  sólo  el
       fichero /linuxrc o un fichero ejecutado por /linuxrc sería diferente.

       Un  tercer  ejemplo  es  más  conveniente  para  discos 'de rescate'.  Debido a que cierta
       información como la localización de la partición  del  sistema  de  ficheros  raíz  no  se
       necesita  en  el momento del arranque, el sistema cargado desde /dev/initrd puede utilizar
       un diálogo y/o autodetección  seguido  posiblemente  de  un  chequeo  a  este  sistema  de
       ficheros.

       Por  último,  pero  no  menos  importante,  las  distribuciones  de Linux en CD-ROM pueden
       utilizar initrd para facilitar la instalación desde  el  CD-ROM.   La  distribución  puede
       utilizar LOADLIN para cargar directamente /dev/initrd desde el CD-ROM sin necesitar ningún
       disquete.  La distribución podría también utilizar un disco de arranque con LILO y después
       cargar un disco-ram más grande a través de /dev/initrd desde el CD-ROM.

CONFIGURACIÓN

       El  dispositivo de bloques /dev/initrd es de sólo lectura, al que se le asigna como número
       mayor 1 y como número menor 250. Típicamente /dev/initrd es  propiedad  de  root:disk  con
       modo  0400  (con  acceso  de  lectura sólo para el 'root').  Si el sistema no tiene creado
       /dev/initrd todavía, puede crearse con las siguientes órdenes:
               mknod -m 400 /dev/initrd b 1 250
               chown root.disk /dev/initrd
       También,  el  soporte  tanto   para   "disco   RAM"   y   "disco   RAM   Inicial"   (p.ej.
       CONFIG_BLK_DEV_RAM=y  y  CONFIG_BLK_DEV_INITRD=y  )  debe ser compilado directamente en el
       núcleo de Linux para utilizar /dev/initrd.  Cuando se usa /dev/initrd, el controlador  del
       disco RAM no se puede cargar como módulo.

FICHEROS

       /dev/initrd
       /dev/ram0
       /linuxrc
       /initrd

VÉASE TAMBIÉN

       chown(1),  mknod(1),  /dev/ram(4),  freeramdisk(8),  rdev(8),  El fichero de documentación
       initrd.txt en el paquete  de  los  fuentes  del  núcleo,  la  documentación  de  LILO,  la
       documentación de LOADLIN, la documentación de SYSLINUX.

OBSERVACIONES

       1.  Con  el  núcleo  actual,  cualquier  sistema de ficheros que permanezca montado cuando
       /dev/ram0 es movido  desde  /  a  /initrd  continúa  siendo  accesible.  Sin  embargo,  la
       información en /proc/mounts no es actualizada.

       2.  Con  el  núcleo actual, si el directorio /initrd no existe, entonces /dev/ram0 no será
       completamente desmontado si /dev/ram0 está siendo utilizado por algún proceso  o  mantiene
       algún  sistema  de  ficheros  montado  en él.  Si no se desmonta completamente /dev/ram0 ,
       entonces /dev/ram0 permanecerá en memoria.

       3. Los usuarios de /dev/initrd no deberían depender del  comportamiento  indicado  en  las
       notas  anteriores.   Este  comportamiento puede cambiar en futuras versiones del núcleo de
       Linux.

AUTOR

       El código del núcleo para el dispositivo initrd ha sido  escrito  por  Werner  Almesberger
       <almesber@lrc.epfl.ch>  y  Hans Lermen <lermen@elserv.ffm.fgan.de>.  El código para initrd
       se añadió al código básico del núcleo en la versión de desarrollo 1.3.73.