Ramdisk e initrd são os mesmos?

10

Ao ler a documentação do kernel no ramdisk no ramfs-rootfs-initramfs.txt, eu estava tendo uma dúvida, como o ramdisk explicou que existem os mesmos recursos do initrd descritos no post na diferença entre initrd e initramfs .

Alguém poderia me esclarecer sobre isso?

E se for o mesmo, li que existem muitas desvantagens, mas ainda no meu PC fedora, vejo

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

na minha pasta de inicialização. É diferente do initrd mencionado acima?

UPDATE_EDIT:
Nos artigos , vi um comando como
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Então, como esse initramfs está vinculado ao initrd.img?

Sen
fonte

Respostas:

13

Um ramdisk é um conjunto de blocos que são copiados para um pedaço de memória alocado e tratados como um dispositivo de bloco. Um sistema de arquivos normal é criado no ramdisk. O initrd (ramdisk inicial) é um ramdisk montado durante a inicialização.

O initramfs é algo diferente. É um arquivo cpio de arquivos carregados durante a inicialização. O kernel carrega o conteúdo em um sistema de arquivos virtual que chama rootfs. Ao contrário de um ramdisk, a exclusão de arquivos libera memória diretamente, e não há sistema de arquivos e camada de bloco extras envolvidos.

Ambos os métodos resultam em arquivos disponíveis para o kernel no momento da inicialização antes do carregamento de qualquer dispositivo, e, na prática, você pode obter resultados semelhantes com ambos. Os sistemas mais antigos usam o initrd (ele foi criado antes do initramfs), mas os sistemas modernos devem estar todos usando o initramfs. Você ainda pode ver a palavra initrd em referência a algo que é realmente um initramfs; é apenas nomear por uma questão de compatibilidade.

efémero
fonte
Graças efêmera, eu gostaria de saber o que você quis dizer com "ramdisk é um conjunto de blocos". Como isso é tratado como um dispositivo de bloco depois de copiado?
Sen
@ Sen: Existe um rdmódulo (posteriormente renomeado para brd, e pode ser incorporado ao kernel), que aloca um monte de memória, cria um dispositivo de bloco e mapeia solicitações de / para o dispositivo de bloco para leitura / gravação na memória.
ephemient
Você pode me dar mais alguma idéia sobre esse módulo rd / brd?
Sen
eu também gostaria de saber que se eu tiver criado uma imagem ramdisk seguindo estas etapas: mke2fs -vm0 / dev / ram 4096; monte -t ​​ext2 / dev / ram / mnt; cd / mnt; arquivos cp / bin, / sbin, / etc, / dev ... no mnt; cd ../; umount / mnt; dd se = / dev / ram bs = contagem de 1k = 4096 de = ext2ramdisk; Como inicializo este ext2ramdisk no meu dispositivo? Basta carregá-lo no carneiro, isso funcionará?
Sen
@ Sen: O gerenciador de inicialização é responsável por carregar o kernel e o init (rd | ramfs) na RAM; consulte a documentação do seu carregador de inicialização. Mas mesmo se você estiver construindo manualmente (por quê?), Você deve usar em find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsvez do initrd.
ephemient