Как загружать Linux с помощью rootfs в ОЗУ?

Корневые файлы – это изображение squashfs, и мой загрузчик загружает его на какой-то адрес в SDRAM. Какие параметры мне нужно передать в ядро, чтобы он мог установить rootfs? Поддержка Squashfs встроена, и она уже работает с

root=/dev/mtdblock2 rootfstype=squashfs 

для загрузки со вспышки.

EDIT: это встроенное устройство на основе MIPS, использующее пользовательский загрузчик. Обычно загрузчик извлекает сжатое ядро ​​из флэш-памяти в SDRAM, а затем ядро ​​монтирует / dev / mtdblock2 как rootfs. Я пытаюсь улучшить загрузчик, чтобы он мог загрузить изображение в свою ОЗУ и загрузиться без записи на флеш.

Я не могу понять, как сделать Linux монтировать образ файловой системы в ОЗУ как rootfs.

Я бы использовал initramfs. ( http://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt )

Многие дистрибутивы Linux используют initramfs (не путать с initrd, они разные) во время процесса загрузки, главным образом для того, чтобы запускать программы пользовательского пространства очень рано в процессе загрузки. Однако вы можете использовать его для чего угодно.

Преимущество initramfs над initrd заключается в том, что initramfs использует файловую систему tmpfs, в то время как initrd использует блок-блок ram. Главное различие здесь в том, что initrd вы должны предварительно распределить все пространство для файловой системы, даже если вы не собираетесь использовать все это пространство. Поэтому, если вы не используете пространство файловой системы, вы теряете барабан, который на встроенном устройстве часто является скудным ресурсом. Tmpfs – это файловая система, которая исчерпывает RAM, но использует столько же бара, сколько в настоящее время используется в файловой системе. Поэтому, если вы удаляете файл из tmpfs, этот RAM немедленно освобождается.

Теперь обычно initramfs является временным, он используется только для запуска некоторых программ в начале процесса загрузки. После запуска этих программ управление переходит к реальной файловой системе, работающей на физическом диске. Однако вам не обязательно это делать. Ничто не мешает вам бежать из initramfs на неопределенный срок.

Достаточно ли параметров rd_start и rd_size ?

Кажется, что порт ARM может иметь синтаксис для опции initrd :

 root=/dev/ram0 rw initrd=0x87000000,8M