fbpx
Wikipedia

initrd

El disco RAM inicial o initrd, por sus siglas en inglés es un sistema de ficheros temporal usado por el núcleo Linux durante el inicio del sistema.

Es usado típicamente para hacer los arreglos necesarios antes de que el sistema de ficheros raíz pueda ser montado.

Explicación

El sistema operativo GNU/Linux, al igual que otros sistemas Unix, consiste en un núcleo, Linux, que es cargado inicialmente en memoria, y que permanece de manera residente durante el funcionamiento del sistema, así como aplicaciones — software que se ejecuta en el espacio de usuario, bajo el control del núcleo.

Para minimizar la cantidad de código que se carga en memoria, y para una modularidad máxima, el núcleo Linux omite mucho código necesario para cargar el sistema operativo. Parte de este código se encuentra en módulos del núcleo, mientras que el resto son aplicaciones en el espacio de usuario.

Para realizar un sistema de arranque que pueda servir para hardware variado, o que pueda ser cargado a partir de distintos medios incluyendo medios virtuales y transitorios como los provistos por una conexión de red, suele ser necesario para el núcleo acceder al espacio de usuario y quizás a módulos del núcleo de manera que pueda obtener los datos y rutinas necesarias para acceder al almacén de datos principal. No tiene por qué ocurrir con todas las posibles configuraciones, aunque suele darse el caso.

El sistema de arranque initrd ha sido la principal solución a este problema desde hace mucho tiempo [1] el 13 de enero de 2008 en Wayback Machine., aunque el recientemente desarrollado initramfs introducido en el núcleo Linux 2.6 contiene importantes mejoras. [2]

En el sistema initrd, los ficheros que necesitan ser accedidos por el núcleo durante el arranque se almacenan en un disco RAM, cuyos contenidos se encuentran en un sistema de ficheros sobre un archivo montado como un dispositivo de bucle, o más históricamente, en un pequeño dispositivo montable como un disquette, y ocupa generalmente entre 1,4 MB y 4 MB. El sistema de ficheros está comprimido con gzip. La localización de la imagen de este disco RAM se da al núcleo en la carga por el cargador de arranque (generalmente o LILO o GRUB).

El sistema initrd emplea ciertos "trucos" y tiene algunos inconvenientes, desde el punto de vista de un administrador. Crear o editar una imagen de un sistema de ficheros de un disco RAM requiere privilegios de administrador para montar la imagen del sistema de ficheros para realizar cambios, y/o para inicializar la estructura del sistema de ficheros (dar formato) en el dispositivo virtual. Además, el sistema de ficheros utilizado en la imagen del disco RAM debe ser uno que no vaya a utilizarse en el núcleo, y el código para acceder al sistema de ficheros debe estar programado en el núcleo, lo que implica que no puede ser descargado más adelante de la misma manera que se puede hacer cuando el código es cargado a partir de módulos del núcleo.

Los discos RAM son de tamaño fijo, por lo que suelen utilizar más espacio del necesario, y también limitan la cantidad de espacio de trabajo disponible una vez que el sistema está arrancado. De hecho el enfoque de initrd no permite descargar nada de la memoria utilizada por éste sin reiniciar.

Sin embargo, pese a estos problemas, dado que desde hace años el sistema se ha venido utilizando casi de forma universal, aún tiene un amplio uso.

Initramfs en comparación con initrd

En comparación, initramfs es un sistema más conveniente y simple para gestionar por los administradores que los sistemas previos basados en discos RAM, ya que el código externo alojado en el disco RAM inicial puede ser editado fácilmente sin privilegios de administrador, y ya que hay una menor indirección: no hay necesidad de hacer un disco virtual, formatearlo y proveer al núcleo con capacidad para manejar sistemas de archivos más allá de los requisitos mínimos para leer un archivo cpio comprimido. [3]

Desde que el sistema original basado en discos RAM se popularizó, un nuevo sistema de ficheros basado en memoria RAM más flexible, conocido como tmpfs o shmfs, se ha convertido en un componente estándar del núcleo. Este sistema es mucho más flexible y eficiente que el disco RAM de tamaño fijo original en muchos aspectos: no requiere formateo, y utiliza tanta memoria como se necesite para contener los datos.

También se usaba otro sistema similar, ramfs, que da al sistema initramfs su nombre. Actualmente los usuarios pueden elegir qué sistema de ficheros dinámico en RAM utilizar. [4]

Además del código para tmpfs, que se utiliza en el núcleo para casi todas las configuraciones de Linux, el único requisito para hacer un disco virtual desde el que arrancar era añadir la posibilidad de descomprimir un paquete de archivos (los desarrolladores del núcleo escogieron utilizar el formato de archivo cpio). Los archivos descomprimidos se almacenan en un sistema de ficheros parecido a tmpfs. Este sistema se conoce como initramfs. [5]

Usos

Así como para cargar el código necesario para preparar el arranque del sistema, un disco RAM (ya sea initrd o initramfs) puede ser útil como disco de rescate, para utilizar en actualizaciones de seguridad, copias de seguridad de archivos, realizar análisis forenses, depurar problemas de hardware, u obviar un disco duro, por ejemplo para arrancar imágenes del sistema operativo por red o desde un medio lento como un CD-ROM.

Muchas distribuciones Linux llevan una única imagen genérica del núcleo destinada a arrancar en la mayor variedad posible de hardware. Los controladores incluidos con esta imagen genérica del núcleo deben ser modulares, ya que no es posible compilar todo de forma estática en el núcleo sin hacerlo demasiado grande para arrancar en ordenadores con poca memoria o desde medios de baja capacidad como disquetes.

Esto a su vez conlleva el problema de detectar y cargar los módulos necesarios para montar el sistema de ficheros raíz en el arranque (o deducir qué sistema de ficheros es o dónde se encuentra).

Para complicar aún más las cosas, el sistema de ficheros raíz puede estar en un volumen RAID por software, LVM, un sistema de ficheros por red de algún tipo (NFS es común en ordenadores sin discos) o en una partición cifrada. Todos ellos requieren preparaciones especiales para montar.

Implementación

La imagen del núcleo y la del initrd, deben ser guardadas en algún lugar accesible por el firmware de arranque del ordenador o el software de arranque, como por ejemplo Grub. En PC, esto es generalmente:

  • El sistema de ficheros raíz en sí.
  • Una pequeña partición formateada como FAT o ext2 en el disco local (una partición de arranque).
  • Un servidor TFTP (en sistemas que puedan arrancar desde Ethernet).

El cargador de arranque cargará en memoria el núcleo y la imagen initrd, y luego ejecutará el núcleo, pasando la dirección de memoria del initrd. Al final de su secuencia de arranque, el núcleo intenta determinar el formato de la imagen de sus primeros bloques de datos:

  • Esquema ramfs: Si la imagen es una imagen de un sistema de ficheros (opcionalmente comprimida con gzip), entonces se hará disponible como un dispositivo de bloque especial (/dev/ram), que se montará como el sistema de ficheros raíz inicial. El controlador para ese sistema de ficheros debe ser compilado estáticamente en el núcleo. Muchas distribuciones usaban originalmente sistemas de ficheros ext2 comprimidos como imágenes initrd. Otras (incluyendo Debian 3.1), usaban cramfs para arrancar en sistemas con memoria limitada, ya que la imagen cramfs puede ser montada sin requerir espacio adicional para descompresión.
Una vez que este sistema de ficheros raíz está iniciado, el núcleo ejecuta "/linuxrc" como su primer proceso. Cuando termina, el núcleo asume que el sistema de ficheros real ha sido montado en el mismo lugar y ejecuta "/sbin/init" para comenzar el proceso de arranque normal en "espacio del usuario".
  • Esquema initram: Si la imagen es un archivo cpio comprimido con gzip, será desempaquetada por el núcleo en un paso intermedio a un tmpfs, que después se convierte en el sistema de ficheros raíz inicial. A este esquema se le llamó initramfs y está disponible desde Linux 2.6.13 en adelante. Tiene la ventaja de no requerir que un sistema de ficheros intermedios sea compilado en el núcleo.
Con initramfs, el núcleo ejecuta "/init" como su primer proceso. "/init" no se espera que termine.

Algunas distribuciones de GNU/Linux, generan un initrd personalizado que consiste sólo en las partes necesarias para arrancar esa computadora en particular, como módulos del núcleo para ATA, SCSI y sistemas de archivos. Estos típicamente incluyen la ubicación y el tipo del sistema de ficheros raíz.

Otras, como Fedora y Ubuntu, crean un initrd mas genérico. Estas comienzan sólo con el nombre del dispositivo del sistema de ficheros raíz (o su UUID) y deben descubrir todo lo demás en el momento del arranque. En este caso, una compleja sucesión de tareas debe realizarse para lograr montar el sistema de ficheros raíz:

  • Cualquier controlador del que dependa el proceso de arranque debe ser cargado. Una solución común es empaquetar los módulos del núcleo para los dispositivos de almacenamiento comunes en el initrd y luego invocar el agente de hotplug para cargar los módulos adecuados para el hardware del ordenador detectado.
  • Si el sistema de ficheros raíz está en NFS:
    • Iniciar la interfaz de red primaria.
    • Invocar un cliente DHCP, con el que pueda obtener una dirección.
    • Extraer la dirección del servidor NFS de la respuesta DHCP.
    • Montar el directorio compartido.
  • Si el sistema de ficheros raíz está en un dispositivo RAID por software, "/linuxrc" no tiene forma de saber en qué dispositivo del volumen RAID está, y debe invocar las utilidades estándar MD para buscar todos los dispositivos de bloque disponibles e iniciar el correcto.
  • Si el sistema de ficheros raíz está en un volumen lógico, "/linuxrc" debe invocar las utilidades LVM para buscar y activar el grupo de volúmenes que lo contiene.
  • Si el sistema de ficheros raíz esta en un dispositivo de bloques cifrado, "/linuxrc" debe:
    • Invocar el script ayudante para consultar al usuario sobre la clave y/o insertar el hardware requerido, como una Smart Card o un dongle USB.
    • Crear un destino de descifrado con el mapeador de dispositivos.
  • Ejecutar cualquier tarea de mantenimiento que no pueda ser hecha de forma segura en un sistema de ficheros ya montado como raíz.
  • Montar el sistema de ficheros en modo sólo lectura.

El sistema de ficheros raíz final no puede montarse sobre "/", ya que eso dejaría los scripts y las herramientas en el sistema de archivo raíz inicial inaccesible para cualquier tarea de limpieza final. En su lugar es montado en un punto de montaje temporal y cambiado a su lugar con pivot_root(2) (que fue introducido específicamente para este propósito). Esto deja el sistema raíz inicial en un punto de montaje (como "/initrd") donde los scripts de inicio normal pueden posteriormente desmontarlo para liberar memoria ocupada por el initrd.

La mayoría de los sistemas de ficheros raíz implementan "/linuxrc" o "/init" como un script de shell y por lo tanto incluyen un shell mínimo (usualmente /bin/bash) junto con otras utilidades esenciales (usualmente Busybox). Para ahorrar un poco más de espacio, la shell, las utilidades y sus bibliotecas necesarias usualmente son compiladas con optimizaciones de espacio habilitadas (como por ejemplo la opción de gcc -Os) y enlazadas contra versiones reducidas de la biblioteca de C como dietlibc o klibc.

Algunas distribuciones (notablemente SUSE y Ubuntu) además usan el initrd para mostrar una imagen gráfica durante el proceso de arranque.

Véase también

Referencias

  • Landley, Rob (15 de marzo de 2005), , linuxdevices.com, archivado desde el original el 1 de marzo de 2009, consultado el 4 de enero de 2013 .

Enlaces externos

  • Documentación del núcleo (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). sobre initrd (en inglés)
  • Documentación del núcleo (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). sobre initramfs y asuntos relacionados (en inglés)
  •   Datos: Q284687

initrd, disco, inicial, siglas, inglés, sistema, ficheros, temporal, usado, núcleo, linux, durante, inicio, sistema, usado, típicamente, para, hacer, arreglos, necesarios, antes, sistema, ficheros, raíz, pueda, montado, Índice, explicación, initramfs, comparac. El disco RAM inicial o initrd por sus siglas en ingles es un sistema de ficheros temporal usado por el nucleo Linux durante el inicio del sistema Es usado tipicamente para hacer los arreglos necesarios antes de que el sistema de ficheros raiz pueda ser montado Indice 1 Explicacion 2 Initramfs en comparacion con initrd 3 Usos 4 Implementacion 5 Vease tambien 6 Referencias 7 Enlaces externosExplicacion EditarEl sistema operativo GNU Linux al igual que otros sistemas Unix consiste en un nucleo Linux que es cargado inicialmente en memoria y que permanece de manera residente durante el funcionamiento del sistema asi como aplicaciones software que se ejecuta en el espacio de usuario bajo el control del nucleo Para minimizar la cantidad de codigo que se carga en memoria y para una modularidad maxima el nucleo Linux omite mucho codigo necesario para cargar el sistema operativo Parte de este codigo se encuentra en modulos del nucleo mientras que el resto son aplicaciones en el espacio de usuario Para realizar un sistema de arranque que pueda servir para hardware variado o que pueda ser cargado a partir de distintos medios incluyendo medios virtuales y transitorios como los provistos por una conexion de red suele ser necesario para el nucleo acceder al espacio de usuario y quizas a modulos del nucleo de manera que pueda obtener los datos y rutinas necesarias para acceder al almacen de datos principal No tiene por que ocurrir con todas las posibles configuraciones aunque suele darse el caso El sistema de arranque initrd ha sido la principal solucion a este problema desde hace mucho tiempo 1 Archivado el 13 de enero de 2008 en Wayback Machine aunque el recientemente desarrollado initramfs introducido en el nucleo Linux 2 6 contiene importantes mejoras 2 En el sistema initrd los ficheros que necesitan ser accedidos por el nucleo durante el arranque se almacenan en un disco RAM cuyos contenidos se encuentran en un sistema de ficheros sobre un archivo montado como un dispositivo de bucle o mas historicamente en un pequeno dispositivo montable como un disquette y ocupa generalmente entre 1 4 MB y 4 MB El sistema de ficheros esta comprimido con gzip La localizacion de la imagen de este disco RAM se da al nucleo en la carga por el cargador de arranque generalmente o LILO o GRUB El sistema initrd emplea ciertos trucos y tiene algunos inconvenientes desde el punto de vista de un administrador Crear o editar una imagen de un sistema de ficheros de un disco RAM requiere privilegios de administrador para montar la imagen del sistema de ficheros para realizar cambios y o para inicializar la estructura del sistema de ficheros dar formato en el dispositivo virtual Ademas el sistema de ficheros utilizado en la imagen del disco RAM debe ser uno que no vaya a utilizarse en el nucleo y el codigo para acceder al sistema de ficheros debe estar programado en el nucleo lo que implica que no puede ser descargado mas adelante de la misma manera que se puede hacer cuando el codigo es cargado a partir de modulos del nucleo Los discos RAM son de tamano fijo por lo que suelen utilizar mas espacio del necesario y tambien limitan la cantidad de espacio de trabajo disponible una vez que el sistema esta arrancado De hecho el enfoque de initrd no permite descargar nada de la memoria utilizada por este sin reiniciar Sin embargo pese a estos problemas dado que desde hace anos el sistema se ha venido utilizando casi de forma universal aun tiene un amplio uso Initramfs en comparacion con initrd EditarEn comparacion initramfs es un sistema mas conveniente y simple para gestionar por los administradores que los sistemas previos basados en discos RAM ya que el codigo externo alojado en el disco RAM inicial puede ser editado facilmente sin privilegios de administrador y ya que hay una menor indireccion no hay necesidad de hacer un disco virtual formatearlo y proveer al nucleo con capacidad para manejar sistemas de archivos mas alla de los requisitos minimos para leer un archivo cpio comprimido 3 Desde que el sistema original basado en discos RAM se popularizo un nuevo sistema de ficheros basado en memoria RAM mas flexible conocido como tmpfs o shmfs se ha convertido en un componente estandar del nucleo Este sistema es mucho mas flexible y eficiente que el disco RAM de tamano fijo original en muchos aspectos no requiere formateo y utiliza tanta memoria como se necesite para contener los datos Tambien se usaba otro sistema similar ramfs que da al sistema initramfs su nombre Actualmente los usuarios pueden elegir que sistema de ficheros dinamico en RAM utilizar 4 Ademas del codigo para tmpfs que se utiliza en el nucleo para casi todas las configuraciones de Linux el unico requisito para hacer un disco virtual desde el que arrancar era anadir la posibilidad de descomprimir un paquete de archivos los desarrolladores del nucleo escogieron utilizar el formato de archivo cpio Los archivos descomprimidos se almacenan en un sistema de ficheros parecido a tmpfs Este sistema se conoce como initramfs 5 Usos EditarAsi como para cargar el codigo necesario para preparar el arranque del sistema un disco RAM ya sea initrd o initramfs puede ser util como disco de rescate para utilizar en actualizaciones de seguridad copias de seguridad de archivos realizar analisis forenses depurar problemas de hardware u obviar un disco duro por ejemplo para arrancar imagenes del sistema operativo por red o desde un medio lento como un CD ROM Muchas distribuciones Linux llevan una unica imagen generica del nucleo destinada a arrancar en la mayor variedad posible de hardware Los controladores incluidos con esta imagen generica del nucleo deben ser modulares ya que no es posible compilar todo de forma estatica en el nucleo sin hacerlo demasiado grande para arrancar en ordenadores con poca memoria o desde medios de baja capacidad como disquetes Esto a su vez conlleva el problema de detectar y cargar los modulos necesarios para montar el sistema de ficheros raiz en el arranque o deducir que sistema de ficheros es o donde se encuentra Para complicar aun mas las cosas el sistema de ficheros raiz puede estar en un volumen RAID por software LVM un sistema de ficheros por red de algun tipo NFS es comun en ordenadores sin discos o en una particion cifrada Todos ellos requieren preparaciones especiales para montar Implementacion EditarLa imagen del nucleo y la del initrd deben ser guardadas en algun lugar accesible por el firmware de arranque del ordenador o el software de arranque como por ejemplo Grub En PC esto es generalmente El sistema de ficheros raiz en si Una pequena particion formateada como FAT o ext2 en el disco local una particion de arranque Un servidor TFTP en sistemas que puedan arrancar desde Ethernet El cargador de arranque cargara en memoria el nucleo y la imagen initrd y luego ejecutara el nucleo pasando la direccion de memoria del initrd Al final de su secuencia de arranque el nucleo intenta determinar el formato de la imagen de sus primeros bloques de datos Esquema ramfs Si la imagen es una imagen de un sistema de ficheros opcionalmente comprimida con gzip entonces se hara disponible como un dispositivo de bloque especial dev ram que se montara como el sistema de ficheros raiz inicial El controlador para ese sistema de ficheros debe ser compilado estaticamente en el nucleo Muchas distribuciones usaban originalmente sistemas de ficheros ext2 comprimidos como imagenes initrd Otras incluyendo Debian 3 1 usaban cramfs para arrancar en sistemas con memoria limitada ya que la imagen cramfs puede ser montada sin requerir espacio adicional para descompresion Una vez que este sistema de ficheros raiz esta iniciado el nucleo ejecuta linuxrc como su primer proceso Cuando termina el nucleo asume que el sistema de ficheros real ha sido montado en el mismo lugar y ejecuta sbin init para comenzar el proceso de arranque normal en espacio del usuario Esquema initram Si la imagen es un archivo cpio comprimido con gzip sera desempaquetada por el nucleo en un paso intermedio a un tmpfs que despues se convierte en el sistema de ficheros raiz inicial A este esquema se le llamo initramfs y esta disponible desde Linux 2 6 13 en adelante Tiene la ventaja de no requerir que un sistema de ficheros intermedios sea compilado en el nucleo Con initramfs el nucleo ejecuta init como su primer proceso init no se espera que termine Algunas distribuciones de GNU Linux generan un initrd personalizado que consiste solo en las partes necesarias para arrancar esa computadora en particular como modulos del nucleo para ATA SCSI y sistemas de archivos Estos tipicamente incluyen la ubicacion y el tipo del sistema de ficheros raiz Otras como Fedora y Ubuntu crean un initrd mas generico Estas comienzan solo con el nombre del dispositivo del sistema de ficheros raiz o su UUID y deben descubrir todo lo demas en el momento del arranque En este caso una compleja sucesion de tareas debe realizarse para lograr montar el sistema de ficheros raiz Cualquier controlador del que dependa el proceso de arranque debe ser cargado Una solucion comun es empaquetar los modulos del nucleo para los dispositivos de almacenamiento comunes en el initrd y luego invocar el agente de hotplug para cargar los modulos adecuados para el hardware del ordenador detectado Si el sistema de ficheros raiz esta en NFS Iniciar la interfaz de red primaria Invocar un cliente DHCP con el que pueda obtener una direccion Extraer la direccion del servidor NFS de la respuesta DHCP Montar el directorio compartido Si el sistema de ficheros raiz esta en un dispositivo RAID por software linuxrc no tiene forma de saber en que dispositivo del volumen RAID esta y debe invocar las utilidades estandar MD para buscar todos los dispositivos de bloque disponibles e iniciar el correcto Si el sistema de ficheros raiz esta en un volumen logico linuxrc debe invocar las utilidades LVM para buscar y activar el grupo de volumenes que lo contiene Si el sistema de ficheros raiz esta en un dispositivo de bloques cifrado linuxrc debe Invocar el script ayudante para consultar al usuario sobre la clave y o insertar el hardware requerido como una Smart Card o un dongle USB Crear un destino de descifrado con el mapeador de dispositivos Ejecutar cualquier tarea de mantenimiento que no pueda ser hecha de forma segura en un sistema de ficheros ya montado como raiz Montar el sistema de ficheros en modo solo lectura El sistema de ficheros raiz final no puede montarse sobre ya que eso dejaria los scripts y las herramientas en el sistema de archivo raiz inicial inaccesible para cualquier tarea de limpieza final En su lugar es montado en un punto de montaje temporal y cambiado a su lugar con pivot root 2 que fue introducido especificamente para este proposito Esto deja el sistema raiz inicial en un punto de montaje como initrd donde los scripts de inicio normal pueden posteriormente desmontarlo para liberar memoria ocupada por el initrd La mayoria de los sistemas de ficheros raiz implementan linuxrc o init como un script de shell y por lo tanto incluyen un shell minimo usualmente bin bash junto con otras utilidades esenciales usualmente Busybox Para ahorrar un poco mas de espacio la shell las utilidades y sus bibliotecas necesarias usualmente son compiladas con optimizaciones de espacio habilitadas como por ejemplo la opcion de gcc Os y enlazadas contra versiones reducidas de la biblioteca de C como dietlibc o klibc Algunas distribuciones notablemente SUSE y Ubuntu ademas usan el initrd para mostrar una imagen grafica durante el proceso de arranque Vease tambien EditarProceso de arranque en LinuxReferencias EditarLandley Rob 15 de marzo de 2005 Introducing initramfs a new model for initial RAM disks linuxdevices com archivado desde el original el 1 de marzo de 2009 consultado el 4 de enero de 2013 Enlaces externos EditarDocumentacion del nucleo enlace roto disponible en Internet Archive vease el historial la primera version y la ultima sobre initrd en ingles Documentacion del nucleo enlace roto disponible en Internet Archive vease el historial la primera version y la ultima sobre initramfs y asuntos relacionados en ingles Datos Q284687 Obtenido de https es wikipedia org w index php title Initrd amp oldid 134922720, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos