¿Ramdisk e initrd son lo mismo?


10

Mientras leía la documentación del kernel sobre ramdisk en ramfs-rootfs-initramfs.txt, tuve una duda, como el ramdisk explicado, es lo mismo que las características de initrd descritas en la publicación en the-difference-between-initrd-and-initramfs .

¿Alguien podría aclararme sobre esto?

Y si es lo mismo, leí que hay muchas desventajas, pero aún en mi PC Fedora, veo

initrd-2.6.29.4-167.fc11.i686.PAE.img

en mi carpeta de arranque. ¿Es diferente del initrd mencionado anteriormente?

UPDATE_EDIT:
en los artículos incluso vi un comando como
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Entonces, ¿cómo se vincula este initramfs con initrd.img?

Respuestas:


13

Un ramdisk es un conjunto de bloques que se copia en un fragmento de memoria asignado y luego se trata como un dispositivo de bloque. Se crea un sistema de archivos normal en el disco ram. El initrd (disco RAM inicial) es un disco RAM que se monta durante el arranque.

El initramfs es algo diferente. Es un archivo cpio de archivos que se carga durante el arranque. El núcleo carga el contenido en un sistema de archivos virtual que llama rootfs. A diferencia de un ramdisk, eliminar archivos directamente libera memoria, y no hay un sistema de archivos adicional ni una capa de bloque involucrada.

Ambos métodos hacen que los archivos estén disponibles para el núcleo en el momento del arranque antes de que se carguen los dispositivos, por lo que en la práctica puede lograr resultados similares con ambos. Los sistemas más antiguos usan initrd (fue creado antes de initramfs) pero los sistemas modernos deberían estar usando initramfs. Todavía puede ver la palabra initrd en referencia a algo que es realmente un initramfs; es solo nombrar por razones de compatibilidad.


Gracias ephemient, me gustaría saber qué quiere decir con "ramdisk es un conjunto de bloques". ¿Cómo se trata esto como un dispositivo de bloque una vez que se ha copiado?
Sen

@Sen: hay un rdmódulo (más tarde renombrado brdy que puede integrarse en el núcleo), que asigna un montón de memoria, crea un dispositivo de bloque y asigna solicitudes de / desde el dispositivo de bloque a lectura / escritura en la memoria.
Ephemient

¿Me puede dar alguna idea más sobre este módulo rd / brd?
Sen

También me gustaría saber que si he creado una imagen de disco RAM siguiendo estos pasos: mke2fs -vm0 / dev / ram 4096; mount -t ext2 / dev / ram / mnt; cd / mnt; cp / bin, / sbin, / etc, / dev ... archivos en mnt; discos compactos ../; umount / mnt; dd if = / dev / ram bs = 1k count = 4096 of = ext2ramdisk; ¿Cómo arrancaré este ext2ramdisk en mi dispositivo? Solo cargándolo en el carnero, ¿funcionará?
Sen

@Sen: El gestor de arranque es responsable de cargar tanto el kernel como el init (rd | ramfs) en la RAM; Consulte la documentación de su gestor de arranque. Pero incluso si lo está construyendo a mano (¿por qué?), Debe usarlo en find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfslugar de initrd.
Ephemient
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.