>Я даже смонтировал angstrom JFFS2 Image
>Он очень большой для RAMDISK ( ~12MB). Памяти всего 32MB.
Что-то у вас каша в голове - зачем размещать это на рамдиске. На http://www.angstrom-distribution.org есть образы rootfs в tar.gz. Распаковываете его на флэш-диске c любой ФС поддерживаемой ядром (лучше конечно нежурналируемой ext2). То что зашито в dataflash используется в качестве initrd а далее монтируется root которая на флэше. JFFS2 - ФС специально разработанная для флэш-дисков но для тех которые являются mtd-устройствами а не блочными устройствами - отсюда ваш геморой с монтированием образа :) Изначальный смысл образа initrd - разместить небольшую rootfs в рам-диске, подгрузить необходимые модули для поддержки железа и ФС основной rootfs, смонтировать ее и сделать pivot_root - эта команда отмонтирует старую rootfs, освобождает память от рамдиска и запускает процесс /sbin/init в новой смонтированной rootfs как будто это сделало ядро - т.е. этому процессу будет дан pid = 1. Далее init выполняет загрузочные скрипты согласно сценариям загрузки.
Кстати, насколько я знаю, в новых ядрах грозятся убрать поддержку initrd оставив только Initramfs в котором корневуха влинуовывается в ядро.
Насчет linuxrc можно здесь почитать.
Кстати, JFFS2 не лучший выбор, если в предыдущий раз размонтирование прошло аварийно (что в наших условиях происходит очень часто) при последующем монтировании она начнет начнет "задумываться" и причем временной интервал ее размышлений будет только увеличиваться с ростом аварийных отключений, вроде есть какие то патчи и может сейчас что изменилось.
2starterkit
Спасибо за ссылку. 2sasamy
Все мои проблемы были из-за того, что я не мог собрать Busybox используя arm-elf-gcc+newlib.
Поэтому я и пытался вытащить файлы с большого JFFS2, чтобы попробовать их на моей плате в составе RAMDISK.
Это уже решено.
Я загрузил Sourcery G++ Lite из CodeSourcery и собрал Busybox при помощи arm-arm-none-linux-gnueab+GLIBC.
Это все работает.
Теперь остался последний этап (hello world).
Пробовал компилить с различными опциями. Пока не работает.
Это мой последний вариант Makefile
ELF файл компилится. Но при запуске на плате пишет Not found.
CodeSourcery говорит
http://www.codesourcery.com/gnu_toolchains/arm/portal/kbentry47
GLIBC Not Found
Question
Why do I get "Not found" or libc.so.6 errors when trying to run applications on my target system?
Answer
This often occurs when running binaries generated by CodeSourcery's toolchain on existing Linux systems.
It probably means you don't have the correct GLIBC and associated dynamic loader installed on your target board.
Please see the following FAQ entry on how to install CodeSourcery's GLIBC.
Но на этом этапе я не хочу использовать разделяемые/динамические библиотеки.
Мне достаточно иметь статически слинкованное приложение (наподобие Busybox).
Просмотрел, как собирается Busybox.
Похоже, что они только используют -static. И все работает у них.
Что-то с моим Makefile неправильно.
Есть у кого-то готовый Makefile для таких простых задач (наподобие hello world)?