LINUX

¿Qué es Initrd Image? Cómo crear una imagen Initrd en Linux

El proceso de arranque de un sistema Linux implica una serie de etapas. Estos incluyen la inicialización del BIOS, la lectura del MBR, el cargador de arranque, la inicialización del kernel y el proceso de inicio.

El initrd (disco ram inicial) juega un papel muy importante en el arranque del sistema. Este tutorial analiza initrd ramdisk y cómo podemos crearlo si es necesario volver a crearlo.

Gestor de arranque GRUB e initrd

Un cargador de arranque es el primer programa de software que se ejecuta durante el proceso de inicio. Es responsable de arrancar el sistema operativo. El cargador de arranque carga el núcleo en la memoria y el núcleo monta la partición raíz para que pueda iniciar el primer proceso, es decir, el proceso de inicio. Echemos un vistazo a los comandos que ejecuta el gestor de arranque para estas tareas:

root (hd0,0)
kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-238.el5.img

El primer comando «root (hd0,0)» le dice al gestor de arranque que la imagen del núcleo está presente en la primera partición del disco duro hd0 (es decir, hd0,0). Esta es la ubicación de la imagen del kernel.

El segundo comando es la propia imagen del núcleo. En este caso, es «/vmlinuz-2.6.18-238.el5». Los argumentos pasados ​​a este comando son ro y root. ro especifica el modo de solo lectura y root le dice a la partición en qué sistema de archivos raíz reside. El kernel monta esta partición raíz en modo de solo lectura.

El tercer comando es la ubicación de initrd. Ahora, para entender qué es initrd, veamos un problema al que se enfrenta el kernel al montar la partición raíz.

El problema del módulo del huevo de gallina

Acabamos de ver que el kernel tiene que montar la partición raíz en modo de solo lectura. Pero el sistema de archivos raíz puede estar en una partición con una o más de las siguientes capacidades:

• Logical Volume Management (as in our case).
• Software RAID.
• NFS.
• Encrypted partition.
• SCSI controller support.

El kernel necesita módulos para estos dispositivos, ya que no se compilan en el kernel en sí. Entonces, el kernel cargará módulos para estos dispositivos en tiempo de ejecución. Estos módulos están presentes en el directorio “/ lib / modules /”. Este directorio está presente en el sistema de archivos raíz y la partición raíz aún no está montada (de eso se trata todo esto). Entonces, ¿cómo puede el kernel acceder a los módulos para montar la partición raíz que reside en la partición raíz misma (sin montarla)?

Aquí initrd viene al rescate. El initrd ramdisk contiene los módulos necesarios para montar la partición raíz. Este initrd reside en la misma partición en la que está presente la imagen del kernel. Entonces, el kernel carga el initrd en la memoria, accede a los módulos y monta la partición raíz en modo de solo lectura.

Creando initrd

Cuando cambia el hardware o software del sistema de archivos, entonces necesitamos volver a crear el archivo initrd. initrd se puede crear con el comando «mkinitrd». La ubicación de initrd es el directorio / boot. La versión del kernel para la que se está creando la imagen initrd debe pasarse como argumento al comando mkinitrd. La versión actual del kernel se puede verificar con el comando uname.

# uname -r
2.6.18-238.el5

Podemos usar este comando para pasar el argumento requerido con la sustitución del comando:

# mkinitrd /boot/initrd-latest.img $(uname -r)

$ (Uname -r) sustituirá la salida del comando «uname -r» en su lugar.

La imagen initrd es una imagen comprimida. Puede verificar esto con el comando de archivo:

# file /boot/initrd-latest.img
/boot/initrd-latest.img: gzip compressed data, from Unix, last modified: Fri Aug 3 10:47:47 2012, max compression

Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar