Причина, по которой большинство дистрибутивов Linux используют ramfs (initramfs) при загрузке, заключается в том, что его содержимое может быть включено в файл ядра или предоставлено загрузчиком. Поэтому они доступны сразу при загрузке, и ядру не нужно их откуда-то загружать.
Это позволяет ядру запускать программы пользовательского пространства, например, настраивать устройства, загружать модули, настраивать этот изящный RAID-массив, содержащий все файловые системы, или даже запрашивать у пользователя пароль для его зашифрованной корневой файловой системы.
Когда эта настройка завершена, первый скрипт, который называется просто exec () s / sbin / init из корневой файловой системы (теперь настроенной и доступной).
Я видел довольно много систем, в которых драйверы сами для контроллеров дисков и rootfs загружаются через модули в initramfs, а не включаются в образ ядра.
Вам не строго требуется для загрузки initramfs - если ваш образ ядра содержит все драйверы, необходимые для доступа к rootfs, и вам не нужны никакие специальные настройки или пользовательский ввод (например, RAID-массивы или зашифрованные файловые системы) ) для его монтирования часто можно напрямую запустить / sbin / init из rootfs.
Смотри также:
http://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
http://www.kernel.org/doc/Documentation/initrd.txt
В качестве примечания: некоторые системы (аварийные диски, встроенные и тому подобное) могут использовать ramfs в качестве корневой файловой системы, когда настоящая корневая файловая система находится на носителе, который может быть удален или недоступен для записи (CD, Flash MTD и т. Д.) .