Ramdisk и initrd - это одно и то же?


10

Читая документацию ядра по ramdisk в ramfs-rootfs-initramfs.txt, у меня возникли сомнения, такие как объяснение ramdisk, что это то же самое, что и функции initrd, описанные в посте, в разнице-другому-initrd-и-initramfs .

Может кто-нибудь прояснить мне это?

И если это то же самое, я читал, что у него много недостатков, но все же в моем Fedora PC, я вижу,

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

в моей загрузочной папке. Это отличается от initrd, упомянутого выше ??

UPDATE_EDIT:
В статьях я даже видел команду
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Так как же этот initramfs связан с initrd.img?

Ответы:


13

RAM-диск - это набор блоков, который копируется в выделенный фрагмент памяти, а затем обрабатывается как блочное устройство. Нормальная файловая система создается на виртуальном диске. Initrd (начальный ramdisk) - это ramdisk, который монтируется во время загрузки.

Initramfs - это нечто иное. Это cpio архив файлов, который загружается во время загрузки. Ядро загружает содержимое в виртуальную файловую систему, которую оно называет rootfs. В отличие от виртуального диска, удаление файлов напрямую освобождает память и не требует дополнительной файловой системы и блочного слоя.

Оба метода приводят к тому, что файлы становятся доступными ядру во время загрузки до загрузки каких-либо устройств, поэтому на практике вы можете добиться сходных результатов с обоими. Старые системы используют initrd (он был создан до initramfs), но все современные системы должны использовать initramfs. Вы все еще можете увидеть слово initrd в отношении чего-то, что действительно является initramfs; это просто название для совместимости.


Спасибо, спасибо, я хотел бы знать, что ты имел в виду под "ramdisk - это набор блоков". Как это трактуется как блочное устройство после его копирования?
Сен

@Sen: есть rdмодуль (позже переименованный brdи может быть встроен в ядро), который выделяет кучу памяти, создает блочное устройство и отображает запросы в / из блочного устройства в чтение / запись в память.
2010 года

Можете ли вы дать мне больше идей об этом модуле rd / brd?
Сен

я также хотел бы знать, что если я создал образ виртуального диска, выполнив следующие действия: mke2fs -vm0 / dev / ram 4096; mount -t ext2 / dev / ram / mnt; кд / минт; cp / bin, / sbin, / etc, / dev ... файлы в mnt; CD ../; umount / mnt; dd if = / dev / ram bs = 1k count = 4096 of = ext2ramdisk; Как я могу загрузить этот ext2ramdisk на моем устройстве? Просто загрузите его в оперативную память, это будет работать?
Сен

@Sen: загрузчик отвечает за загрузку как ядра, так и init (rd | ramfs) в RAM; см. документацию вашего загрузчика. Но даже если вы создаете его вручную (почему ??), вы должны использовать find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsвместо initrd.
2010 года
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.