Linux Power PC пытается смонтировать раздел MTD при загрузке
Я работаю над созданием двух систем Linux, обе из которых основаны на устройствах Freescale PowerPC, одна - MPC8349, другая - P1020. Я смог собрать, установить и загрузить ядро на обеих картах. Наборы инструментов и образы RAM-дисков поступают из пакетов LTIB от Freescale. Обе карты имеют 32 МБ флеш-памяти, сопоставленной по одному и тому же адресу.
У меня следующая проблема: плата P1020 загружается нормально, используя RAM-диск с флэш-памятью в дереве устройств, показывает разделы флэш-устройства (JFFS2) и НЕ пытается подключить флэш-раздел как root. MPC8349 нормально загружается с RAM-диск, но после определения разделов флэш-памяти ядро паникует, потому что ищет раздел флэш-памяти для монтирования в качестве корневого раздела, и ни один из них не может быть использован (не отформатирован). Если я удаляю флэш-память из дерева устройств, карта загружается нормально используя RAM-диск.
Я не слишком знаком с загрузочными сценариями Linux, и я не понял, где можно отключить этот способ монтирования раздела MTD. Я хочу, чтобы платы загружались и монтировали RAM-диск, как это делает плата P1020. Флэш-раздел будет инициализирован и смонтирован позднее, но не как корневой раздел.
ТИА
Дорин
1 ответ
Сложно дать ответ, так как вы не показываете нам никакой информации о конфигурации.
Но в целом ядру Linux требуется корневая файловая система, поэтому она должна быть предоставлена тем или иным способом, иначе она будет паниковать во время загрузки. Информация rootfs часто передается ядру через загрузочную строку из загрузчика. Вы можете увидеть параметры загрузки с помощью команды dmesg
прямо в начале журнала.
Например, в вашем случае, когда вы используете разделы MTD, это может выглядеть так:
console=ttyAMA0,115200 root=/dev/mtdblock3 ro rootfs=squashfs rootwait
console
Параметр указывает последовательную консоль, но он относится только к выходу последовательной консоли, поэтому не имеет к этому отношения. Третий (/dev/mtdblock3
) раздел на устройстве mtd теперь указан как rootfs. Будет монтироваться только для чтения (ro
флаг), а тип файловой системы указывается в виде squashfs (rootfs=squashfs
). ключевое слово rootwait
говорит ядру ждать неопределенно долго, пока происходит монтирование, в основном для асинхронных устройств (usb, mmc). Вы можете найти больше информации о различных загрузочных аргументах в https://www.kernel.org/doc/Documentation/kernel-parameters.txt
Теперь эта строка передается в ваше ядро загрузчиком, я не знаком с вашей платой, но быстрый гугл говорит мне, что BSP Freescales для этого содержит u-boot
погрузчик. Вы должны быть в состоянии найти свои параметры загрузки где-нибудь в файле конфигурации платы для u-boot, так что, возможно, grep
: пингуйте исходный код u-boot с параметрами загрузки, которые вы найдете с помощью dmesg
Вы можете найти это. Вы можете получить хороший намек на разницу, сравнивая строки загрузки между этими двумя платами.