Provided by: manpages-es_4.23.1-1_all 

NOMBRE
initrd - disco-RAM inicializado por el gestor de arranque
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. En general, /dev/initrd es propiedad de root:disk con modo 0400 (con acceso de lectura
sólo para el 'root'). Si el sistema Linux no tuviese ya creado /dev/initrd, 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.
DESCRIPCIÓN
El archivo 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 el inicio del sistema en dos fases.
En la primera fase del inicio, el núcleo pone en marcha y monta un sistema de ficheros raíz 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.
Operación de Iniciado
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 dispositivo /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.
Modificando el sistema de archivos raiz habitual.
Por defecto, las opciones establecidas del núcleo (p. ej. establecidas en el fichero del núcleo mediante
rdev(8) 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 archivos 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 Documentation/filesystems/nfs/nfsroot.txt (o
Documentation/filesystems/nfsroot.txt antes de Linux 2.6.33). Para más información sobre el
establecimiento del sistema de archivos raíz, vea también la documentación 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 estar 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.2 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
Nota: el empleo de /proc/sys/kernel/real-root-dev para modificar el sistema de archivos raiz está
obsoleto. Consulte el archivo Documentation/admin-guide/initrd.rst (o Documentation/initrd.txt antes de
Linux 4.10) asi como pivot_root(2) y pivot_root(8) para ver un método más reciente de hacerlo.
Modo de empleo
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.
ARCHIVOS
/dev/initrd
/dev/ram0
/linuxrc
/initrd
NOTAS
• 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.
• 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.
• 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.
VÉASE TAMBIÉN
chown(1), mknod(1), ram(4), freeramdisk(8), rdev(8)
Documentation/admin-guide/initrd.rst (o Documentation/initrd.txt antes de Linux 4.10) en la documentación
del núcleo de Linux , la documentación de LILO, de LOADLIN y de SYSLINUX.
TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Julio González Durán
<jugonzalez@mx3.redestb.es>, Juan Piernas <piernas@ditec.um.es> y Marcos Fouces <marcos@debian.org>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con
respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a
debian-l10n-spanish@lists.debian.org.
Páginas de Manual de Linux 6.8 2 Mayo 2024 initrd(4)