Ramdisk et initrd sont-ils les mêmes?

10

En lisant la documentation du noyau sur ramdisk dans ramfs-rootfs-initramfs.txt, j'avais un doute comme l'explique le ramdisk, il y a les mêmes que les fonctionnalités initrd décrites dans la publication à la différence entre initrd et initramfs .

Quelqu'un pourrait-il me clarifier à ce sujet ??

Et si c'est la même chose, j'ai lu qu'il y avait beaucoup d'inconvénients, mais toujours sur mon PC fedora, je vois

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

dans mon dossier de démarrage. Est-ce différent de l'initrd mentionné ci-dessus ??

UPDATE_EDIT:
Dans les articles, j'ai même vu une commande comme
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Alors, comment ces initramfs sont-ils liés à initrd.img?

Sen
la source

Réponses:

13

Un disque virtuel est un ensemble de blocs qui est copié dans un bloc de mémoire alloué, puis traité comme un périphérique de bloc. Un système de fichiers normal est créé sur le disque virtuel. Le initrd (ramdisk initial) est un ramdisk qui est monté pendant le démarrage.

Les initramfs sont quelque chose de différent. Il s'agit d'une archive cpio de fichiers chargée lors du démarrage. Le noyau charge le contenu dans un système de fichiers virtuel qu'il appelle rootfs. Contrairement à un disque virtuel, la suppression de fichiers libère directement de la mémoire, et aucun système de fichiers supplémentaire ni couche de blocage n'est impliqué.

Les deux méthodes font en sorte que les fichiers soient disponibles pour le noyau au démarrage avant le chargement des périphériques, et donc dans la pratique, vous pouvez obtenir des résultats similaires avec les deux. Les systèmes plus anciens utilisent initrd (il a été créé avant initramfs) mais les systèmes modernes devraient tous utiliser initramfs. Vous pouvez toujours voir le mot initrd en référence à quelque chose qui est vraiment un initramfs; c'est juste un nom pour des raisons de compatibilité.

éphémère
la source
Merci éphémère, je voudrais savoir ce que vous vouliez dire par "ramdisk est un ensemble de blocs". Comment est-ce traité comme un périphérique bloc une fois copié?
Sen
@Sen: il existe un rdmodule (renommé plus tard brdet pouvant être intégré au noyau), qui alloue un tas de mémoire, crée un périphérique de bloc et mappe les demandes vers / depuis le périphérique de bloc en lecture / écriture en mémoire.
éphémient
Pouvez-vous me donner une idée de ce module rd / brd?
Sen
je voudrais également savoir que si j'ai créé une image ramdisk en suivant ces étapes: mke2fs -vm0 / dev / ram 4096; mount -t ext2 / dev / ram / mnt; cd / mnt; fichiers cp / bin, / sbin, / etc, / dev ... dans mnt; cd ../; umount / mnt; dd if = / dev / ram bs = 1k count = 4096 of = ext2ramdisk; Comment démarrer ce disque ext2ramdisk sur mon appareil? Le charger simplement dans le bélier, est-ce que cela fonctionnera?
Sen
@Sen: Le chargeur de démarrage est chargé de charger à la fois le noyau et l'init (rd | ramfs) dans la RAM; consultez la documentation de votre chargeur de démarrage. Mais même si vous le construisez à la main (pourquoi ??), vous devriez utiliser à la find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsplace d'initrd.
éphémient