Rootfs - это образ squashfs, и мой загрузчик загружает его по некоторому адресу в SDRAM. Какие параметры мне нужно передать ядру, чтобы он мог оттуда смонтировать rootfs? Поддержка Squashfs встроена, и она уже работает с
root=/dev/mtdblock2 rootfstype=squashfs
для загрузки с флешки.
РЕДАКТИРОВАТЬ: Это встроенное устройство на основе 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 использует блочное устройство. Ключевое отличие здесь состоит в том, что для initrd вы должны предварительно выделить все пространство для файловой системы, даже если вы не собираетесь использовать все это пространство. Поэтому, если вы не используете пространство файловой системы, вы теряете оперативную память, которая на встроенном устройстве часто является дефицитным ресурсом. Tmpfs - это файловая система, в которой заканчивается оперативная память, но используется только столько оперативной памяти, сколько используется в настоящее время в файловой системе. Так что, если вы удалите файл из tmpfs, этот оперативный диск будет немедленно освобожден.
Теперь обычно initramfs является временным, используется только для запуска некоторых программ в самом начале процесса загрузки. После запуска этих программ управление передается реальной файловой системе, работающей на физическом диске. Однако вам не нужно этого делать. Ничто не остановит вас от бесконечного исчерпания initramfs.
источник
Являются ли rd_start и rd_size ?
Кажется, что порт ARM может иметь синтаксис для опции initrd :
источник
phram
Для этой цели я использую драйвер: он эмулирует MTD-устройство с использованием физической памяти, а это означает, что вы можете использовать для тестирования / разработки точно такой же образ rootfs, который позже вы собираетесь записать на настоящую флэш-память. Необходимая магия в командной строке ядра будет что-то вродеОбратите внимание, что вам также нужен
memmap
аргумент, чтобы убедиться, что ядро не пытается использовать эту память для себя. 9MB - насколько велик мой rootfs (или был). \ Before $ необходим в моем загрузчике, может не быть в вашем. Адрес, который я выбрал, является произвольным, потому что я не знаю, как распределяется физическая память на вашем устройстве, поэтому выберите тот, который имеет смысл для вас. Я предполагаю, что вы ранее использовали tftp или что-то для загрузки ваших rootfs по этому адресуисточник