Provided by:
manpages-es_1.55-10_all 
NOMBRE
initrd - disco-RAM inicializado por el gestor de arranque
DESCRIPCI'ON
El fichero especial /dev/initrd es un dispositivo de bloques de solo
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 nucleo del sistema. Asi, el nucleo puede utilizar
el contenido del dispositivo /dev/initrd para un arranque del sistema
en dos fases.
En la primera fase del arranque, el nucleo pone en marcha y monta un
sistema de ficheros raiz 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 modulos desde
el contenido del dispositivo raiz inicial. Tras cargar los modulos
adicionales, se monta un nuevo sistema de ficheros raiz (es decir, el
sistema de ficheros raiz 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 nucleo y el
contenido de /dev/initrd en memoria.
2. En la puesta en marcha del nucleo, este descomprime y copia el
contenido del disp. /dev/initrd en el dispositivo /dev/ram0 y a
continuacion libera la memoria utilizada por /dev/initrd.
3. Seguidamente, el nucleo monta el dispositivo /dev/ram0 en modo
lectura/escritura como el sistema de ficheros raiz inicial.
4. Si el sistema de ficheros raiz habitual indicado coincide con el
sistema de ficheros raiz inicial (por ejemplo, /dev/ram0 ) entonces
el nucleo salta directamente al ultimo paso para la secuencia de
arranque habitual.
5. Si el fichero ejecutable /linuxrc esta presente en el sistema de
ficheros raiz inicial, se ejecuta con uid (identificador de usuario)
0. (El fichero /linuxrc debe tener permiso de ejecucion. El fichero
/linuxrc puede ser cualquier ejecutable valido, incluyendo los
guiones de cualquier procesador de ordenes -'shell scripts'.)
6. Si no se ejecuta /linuxrc o cuando /linuxrc termina, se monta el
sistema de ficheros raiz habitual. (Si /linuxrc termina con algun
sistema de ficheros montado en el raiz inicial, entonces el
comportamiento del nucleo es INDETERMINADO. (Vea la seccion
OBSERVACIONES para consultar el comportamiento actual del nucleo.)
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 raiz habitual y queda algun proceso en
funcionamiento sobre /dev/ram0 cuando /linuxrc termina, el
comportamiento del nucleo es INDETERMINADO. Vea la seccion de
OBSERVACIONES para consultar el comportamiento actual del nucleo.)
8. La secuencia de arranque/inicio habitual (por ejemplo, la
ejecucion 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 nucleo:
initrd=nombre_de_fichero
Especifica el fichero a cargar como el contenido de /dev/initrd.
Para LOADLIN esta es una opcion de linea de ordenes. Para LILO
tiene que utilizar este orden en el fichero de configuracion de
LILO, /etc/lilo.config. El nombre de fichero indicado con esta
opcion sera normalmente una imagen del sistema de ficheros
comprimida con GZip.
noinitrd
Esta opcion de arranque deshabilita la operacion de arranque en
dos fases. El nucleo realiza la secuencia de arranque habitual
como si /dev/initrd no hubiera sido inicializado. Con esta
opcion, cualquier contenido de /dev/initrd cargado en la memoria
por el 'boot loader' es preservado. Esta opcion permite que
/dev/initrd contenga cualquier clase de datos y no este limitado
a una imagen de sist. de ficheros. De todas formas, el
dispositivo /dev/initrd es de solo-lectura y puede ser leido
solo una vez tras la puesta en marcha del sistema.
root=nombre-de-dispositivo
Especifica el dispositivo que sera utilizado como sistema de
ficheros normal (raiz). Para LOADLIN esta es una opcion de
linea de ordenes. Para LILO esta es una opcion para el momento
de arranque o puede utilizarse como linea de opcion en el
fichero de configuracion de LILO, /etc/lilo.config. El
dispositivo indicado por la opcion debe ser un dispositivo
'montable', y contener un sistema de ficheros raiz adecuado.
CAMBIAR EL SISTEMA DE FICHEROS RA'IZ HABITUAL
Por defecto, las opciones establecidas del nucleo (p. ej. establecidas
en el fichero del nucleo 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. raiz montado
como NFS, debemos utilizar las opciones de arranque nfs_root_name y
nfs_root_addrs para proporcionar/establecer las opciones de NFS. Para
mas informacion sobre sistemas raiz montados como NFS, vea el fichero
de documentacion del nucleo nfsroot.txt. Para mas informacion sobre el
establecimiento del sistema de ficheros raiz, vea tambien la doc. de
LILO y LOADLIN.
Tambien es posible para el ejecutable de /linuxrc cambiar el
dispositivo raiz por defecto. Para que /linuxrc cambie este
dispositivo, /proc debe ser montado. Tras montar /proc, /linuxrc
cambia el disp. raiz 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 raiz fisico, este
se cambia haciendo que /linuxrc escriba el nuevo numero de sistema de
ficheros en /proc/sys/kernel/real-root-dev. Para un sistema raiz NFS,
el disp. raiz se cambia haciendo que /linuxrc escriba la opcion de NFS
en los ficheros /proc/sys/kernel/nfs-root-name y /proc/sys/kernel/nfs-
root-addrs y despues escriba 0xff (p.ej. el numero de pseudo-
dispositivo-NFS) en el fichero /proc/sys/kernel/real-root-dev. Por
ejemplo, la siguiente linea de ordenes del shell cambiaria el disp.
raiz a /dev/hdb1:
echo 0x365 >/proc/sys/kernel/real-root-dev
Como ejemplo para sistemas NFS, las siguientes lineas de ordenes
cambiarian el dispositivo raiz al directorio NFS /var/nfsroot en un
servidor NFS local con direccion IP 193.8.232.7 para un sistema con
direccion 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'ON
La principal motivacion para implementar initrd fue la de permitir una
configuracion modular del nucleo en el momento de la instalacion.
Aqui se describe un posible escenario de la instalacion del sistema:
1. El programa cargador arranca desde disquete u otro medio con un
nucleo minimo (p.ej. con soporte para /dev/ram, /dev/initrd, y el
sistema de ficheros ext2) y carga /dev/initrd con una version
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 raiz normal (p.ej. tipo de
dispositivo, controladores, sistema de ficheros) y (2) el formato 'de
distribucion' (p.ej. CD-ROM, red, cinta, ...). Esto se puede hacer
preguntando al usuario, tanteando/probando automaticamente, o
mediante una aproximacion mixta.
3. El ejecutable /linuxrc carga los modulos necesarios desde el
sistema de ficheros inicial.
4. El ejecutable /linuxrc crea y 'expande' el sistema de ficheros
raiz. (En esta etapa, el sistema raiz no tiene por que ser aun un
sistema completo.)
5. El ejecutable /linuxrc establece /proc/sys/kernel/real-root-dev,
desmonta /proc, el sistema de ficheros raiz y cualquier otro sist. de
ficheros que hubiese montado, y entonces termina.
6. El nucleo entonces monta el sistema de ficheros definitivo.
7. Ahora que el sist. de ficheros esta accesible e intacto, el gestor
de arranque puede ser instalado.
8. El gestor de arranque esta configurado para cargarse en
/dev/initrd, un sistema de ficheros con el conjunto de modulos que
fue utilizado para poner en marcha el sistema. (p.ej. El dispositivo
/dev/ram0 puede ser modificado, despues 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 instalacion.
El papel clave de /dev/initrd en el proceso es el de reutilizar los
datos de configuracion durante el funcionamiento habitual del sistema
sin que se requiera una seleccion inicial del nucleo, o un nucleo
generico 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 solo un pequeno
conjunto de nucleos (idealmente, uno) y mantener la parte especifica de
la configuracion de cada sistema tan pequena como sea posible. En este
caso, se crea un fichero comun con todos los modulos requeridos.
Entonces, solo el fichero /linuxrc o un fichero ejecutado por /linuxrc
seria diferente.
Un tercer ejemplo es mas conveniente para discos 'de rescate'. Debido
a que cierta informacion como la localizacion de la particion del
sistema de ficheros raiz no se necesita en el momento del arranque, el
sistema cargado desde /dev/initrd puede utilizar un dialogo y/o
autodeteccion seguido posiblemente de un chequeo a este sistema de
ficheros.
Por ultimo, pero no menos importante, las distribuciones de Linux en
CD-ROM pueden utilizar initrd para facilitar la instalacion desde el
CD-ROM. La distribucion puede utilizar LOADLIN para cargar
directamente /dev/initrd desde el CD-ROM sin necesitar ningun disquete.
La distribucion podria tambien utilizar un disco de arranque con LILO y
despues cargar un disco-ram mas grande a traves de /dev/initrd desde el
CD-ROM.
CONFIGURACI'ON
El dispositivo de bloques /dev/initrd es de solo lectura, al que se le
asigna como numero mayor 1 y como numero menor 250. Tipicamente
/dev/initrd es propiedad de root:disk con modo 0400 (con acceso de
lectura solo para el 'root'). Si el sistema no tiene creado
/dev/initrd todavia, puede crearse con las siguientes ordenes:
mknod -m 400 /dev/initrd b 1 250
chown root.disk /dev/initrd
Tambien, 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 nucleo de Linux para utilizar /dev/initrd. Cuando
se usa /dev/initrd, el controlador del disco RAM no se puede cargar
como modulo.
FICHEROS
/dev/initrd
/dev/ram0
/linuxrc
/initrd
V'EASE TAMBI'EN
chown(1), mknod(1), /dev/ram(4), freeramdisk(8), rdev(8), El fichero de
documentacion initrd.txt en el paquete de los fuentes del nucleo, la
documentacion de LILO, la documentacion de LOADLIN, la documentacion de
SYSLINUX.
OBSERVACIONES
1. Con el nucleo actual, cualquier sistema de ficheros que permanezca
montado cuando /dev/ram0 es movido desde / a /initrd continua siendo
accesible. Sin embargo, la informacion en /proc/mounts no es
actualizada.
2. Con el nucleo actual, si el directorio /initrd no existe, entonces
/dev/ram0 no sera completamente desmontado si /dev/ram0 esta siendo
utilizado por algun proceso o mantiene algun sistema de ficheros
montado en el. Si no se desmonta completamente /dev/ram0 , entonces
/dev/ram0 permanecera en memoria.
3. Los usuarios de /dev/initrd no deberian depender del comportamiento
indicado en las notas anteriores. Este comportamiento puede cambiar en
futuras versiones del nucleo de Linux.
AUTOR
El codigo del nucleo para el dispositivo initrd ha sido escrito por
Werner Almesberger <almesber@lrc.epfl.ch> y Hans Lermen
<lermen@elserv.ffm.fgan.de>. El codigo para initrd se anadio al codigo
basico del nucleo en la version de desarrollo 1.3.73.