ramdisk
просто относится к образу диска в памяти. Он реализован с помощью драйвера ramfs
VFS в ядре. Содержимое виртуального диска будет стерто при следующей перезагрузке или выключении питания.
Далее я расскажу вам подробности о initrd
и initramfs
.
Проще говоря, и initrd
, и initramfs
относятся к пользовательскому пространству ранней стадии root filesystem
(также известному как rootfs
), которое позволит вам запускать очень минимальную файловую систему в памяти.
Документация представлена в Documentation/filesystems/ramfs-rootfs-initramfs.txt
части ядра Linux. исходное дерево, которое также даст вам подробное описание того, что это такое.
Что такое initrd
?
Одним из распространенных случаев, когда требуется такая файловая система на ранней стадии, является загрузка модулей драйверов для контроллеров жестких дисков. Если драйверы присутствовали на жестком диске, это становится проблемой курицы и яйца. Наличие этих драйверов в составе rootfs на ранней стадии помогает ядру загружать драйверы для любых обнаруженных контроллеров жестких дисков, прежде чем оно сможет смонтировать реальную корневую файловую систему с жесткого диска. Другим решением этой проблемы может быть включение всех модулей драйверов в ядро, но таким образом вы увеличите размер двоичного файла ядра. Такой образ файловой системы обычно называют initrd
. Это реализовано с использованием либо ramfs
, либо tmpfs
. Он эмулируется с помощью блочного устройства обратной петли.
Загрузчик загружает образ ядра в адрес памяти, образ initrd в другой адрес памяти и сообщает ядру, где найти initrd, передает аргументы загрузки ядру и передает управление ядру, чтобы позволить ему продолжить процесс загрузки. .
Чем тогда он отличается от initramfs
?
initramfs
— файловая система еще более ранней стадии по сравнению с initrd
, которая встроена в ядро (конечно, контролируется конфигурацией ядра).
Насколько я знаю, и initrd
, и initramfs
контролируются этой единственной конфигурацией ядра, но она могла быть изменена в последних ядрах.
config BLK_DEV_INITRD
Я не буду углубляться в то, как создавать ваши собственные initramfs, но могу сказать вам, что он просто использует формат cpio
для хранения файлов и может быть настроен с использованием usr/Kconfig
при сборке ядра. Даже если вы не указали свой собственный образ initramfs, но включили поддержку initramfs, ядро автоматически встраивает очень простой initramfs
, содержащий /dev/console
, /root
и некоторые другие файлы/каталоги.
Кроме того, существует более новая файловая система tmpfs
, которая обычно используется для реализации файловых систем в памяти. На самом деле более новые ядра реализуют initrd
, используя tmpfs
вместо ramfs
.
ОБНОВЛЕНИЕ:
Просто случайно наткнулся на похожий вопрос
Это также может быть полезно
person
Tuxdude
schedule
16.03.2013