Para o ramsfs / initrams, o dispositivo para armazenar em cache o fs é "vazio". Se você olhar a descrição em /Documentation/filesystems/ramfs-rootfs-initramfs.txt
:
Normally all files are cached in memory by Linux. Pages of data read from backing store (usually the block device the filesystem is mounted on) are kept around in case it's needed again, but marked as clean (freeable) in case the Virtual Memory system needs the memory for something else. Similarly, data written to files is marked clean as soon as it has been written to backing store, but kept around for caching purposes until the VM reallocates the memory. A similar mechanism (the dentry cache) greatly speeds up access to directories.
With ramfs, there is no backing store. Files written into ramfs allocate dentries and page cache as usual, but there's nowhere to write them to. This means the pages are never marked clean, so they can't be freed by the VM when it's looking to recycle memory.
Portanto, um "mecanismo para expor a estrutura do cache interno como um sistema de arquivos" não está errado, mas não como eu descreveria - é um sistema de arquivos que usa a estrutura de cache interna usual, mas não tem espaço para "fazer backup" (como ramdisk tinha), então somente vive no cache, e os mecanismos para invalidar e escrever páginas nunca são usados.
Quanto ao arquivo cpio
, veja novamente ramfs-rootfs-initramfs.txt
:
The old initrd was always a separate file, while the initramfs archive is linked into the linux kernel image. (The directory linux-*/usr is devoted to generating this archive during the build.)
Portanto, o cpio
é carregado usando o mesmo método que o kernel carrega, que pode ser de um dispositivo de bloco, ou pela rede, ou por meio de um pombo, ou o que for. Não importa. O bootloader cuida disso, o kernel não precisa de um driver de sistema de arquivos.