¿La diferencia entre initrd y initramfs?

Por lo que sé,initrd actúa como un dispositivo de bloque, por lo que requiere un controlador de sistema de archivos (comoext2). El kernel debe tener al menos un módulo incorporado para detectar el sistema de archivos deinitrd. En este articulo,Presentamos initramfs, un nuevo modelo para discos RAM iniciales, esta escrito que

Pero los ramdisk en realidad desperdician aún más memoria debido al almacenamiento en caché. Linux está diseñado para almacenar en caché todos los archivos y las entradas de directorio leídas o escritas en dispositivos de bloqueo, por lo que Linux copia los datos hacia y desde el disco ram en la "memoria caché de página" (para los datos de archivo), y la "memoria caché dentry" (para las entradas de directorio) . La desventaja del disco ram que pretende ser un dispositivo de bloque es que se trata como un dispositivo de bloque.

Que espage cache ydentry cache? En el párrafo, ¿significa que los datos se duplicaron porqueramdisk ¿Se trata como un dispositivo de bloque, por lo que todos los datos se almacenan en caché?

En contraste,ramfs:

Hace unos años, Linus Torvalds tuvo una buena idea: ¿qué pasaría si la memoria caché de Linux pudiera montarse como un sistema de archivos? ¿Simplemente mantenga los archivos en caché y nunca los elimine hasta que se eliminen o el sistema se reinicie? Linus escribió un pequeño envoltorio alrededor del caché llamado "ramfs", y otros desarrolladores del kernel crearon una versión mejorada llamada "tmpfs" (que puede escribir los datos en un espacio de intercambio y limitar el tamaño de un punto de montaje determinado para que se llene antes de consumir) toda la memoria disponible). Initramfs es una instancia de tmpfs.

Estos sistemas de archivos basados ​​en RAM crecen o se reducen automáticamente para adaptarse al tamaño de los datos que contienen. Agregar archivos a un ramfs (o extender archivos existentes) asigna automáticamente más memoria, y eliminar o truncar archivos libera esa memoria. No hay duplicación entre el dispositivo de bloque y la memoria caché, porque no hay dispositivo de bloque. La copia en el caché es la única copia de los datos. Lo mejor de todo es que este no es un código nuevo, pero una nueva aplicación para el código de almacenamiento en caché de Linux existente, lo que significa que no agrega casi ningún tamaño, es muy simple y se basa en una infraestructura extremadamente bien probada.

En suma,ramfs es solo un archivo abierto y cargado en la memoria, ¿no es así?

Ambosinitrd yramfs están comprimidos en tiempo de compilación, pero la diferencia es,initrd es un dispositivo de bloque desempaquetado para ser montado por el kernel en el arranque, mientras queramfs se desempaqueta a través de cpio en la memoria. ¿Estoy en lo correcto? O esramfs ¿Un sistema de archivos muy mínimo?

Finalmente, hasta el día de hoy, lainitrd La imagen aún se presenta en el último kernel. Sin embargo, es queinitrd en realidad elramfs ¿Se usa hoy y el nombre es solo para propósitos históricos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta