A diferença entre initrd e initramfs?

Até onde sei,initrd atua como um dispositivo de bloco, exigindo, portanto, um driver de sistema de arquivosext2). O kernel deve ter pelo menos um módulo embutido para detectar o sistema de arquivosinitrd. Neste artigo,Apresentando o initramfs, um novo modelo para discos RAM iniciais, está escrito que:

Mas os ramdisks realmente perdem ainda mais memória devido ao armazenamento em cache. O Linux foi projetado para armazenar em cache todos os arquivos e entradas de diretório lidos ou gravados em dispositivos de bloco, portanto o Linux copia os dados de e para o ramdisk no "cache de páginas" (para dados de arquivo) e "cache dentry" (para entradas de diretório) . A desvantagem do disco a fingir ser um dispositivo de bloco é tratado como um dispositivo de bloco.

O que épage cache edentry cache? No parágrafo, significa que os dados foram duplicados porqueramdisk é tratado como um dispositivo de bloco, portanto, todos os dados são armazenados em cache?

Em contraste,ramfs:

Alguns anos atrás, Linus Torvalds tinha uma boa idéia: e se o cache do Linux pudesse ser montado como um sistema de arquivos? Basta manter os arquivos em cache e nunca se livrar deles até que eles são excluídos ou o sistema é reiniciado? Linus escreveu um pequeno invólucro em torno do cache chamado "ramfs", e outros desenvolvedores do kernel criaram uma versão melhorada chamada "tmpfs" (que pode gravar os dados para trocar espaço e limitar o tamanho de um determinado ponto de montagem para que ele seja preenchido antes de consumir toda a memória disponível). O initramfs é uma instância do tmpfs.

Esses sistemas de arquivos baseados em RAM aumentam ou diminuem automaticamente para se ajustarem ao tamanho dos dados que contêm. Adicionar arquivos a um ramfs (ou estender arquivos existentes) aloca mais memória automaticamente, e excluir ou truncar arquivos libera essa memória. Não há duplicação entre o dispositivo de bloco e o cache, porque não há dispositivo de bloco. A cópia no cache é a única cópia dos dados. O melhor de tudo é que este não é um novo código, mas um novo aplicativo para o código de cache Linux existente, o que significa que ele adiciona quase nenhum tamanho, é muito simples e é baseado em uma infraestrutura extremamente bem testada.

Em suma,ramfs é apenas um arquivo aberto e carregado na memória, não é?

Ambosinitrd eramfs são compactados em tempo de compilação, mas a diferença é queinitrd é um dispositivo de bloco descompactado para ser montado pelo kernel na inicialização, enquantoramfs é descompactado via cpio na memória. Estou correcto? Ou éramfs um sistema de arquivos muito pequeno?

Finalmente, até este dia, oinitrd imagem ainda é apresentada no kernel mais recente. No entanto, é issoinitrd na verdade, oramfs usado hoje e o nome é apenas para fins históricos?

questionAnswers(4)

yourAnswerToTheQuestion