Проблема заключается в том что после пересборки образа rootfs (пересобирал Busybox что бы добавить необходимые компоненты) ядро ругается на файловую систему и говорит вот что:
VFS: Mounted root (ext2 filesystem) on device 8:1.
devtmpfs: mounted
Freeing init memory: 116K
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
Грузится образ файловой системы(rootfs) из USB Flash. Строка из ядра:
При этом если брать ядро и рутфс с диска который был с платой, то все грузится. Но ядро стам старенькое и опять же в busybox`е нет нужных мне функций.
А,да.. busyBox собрался без ошибок и на выходе отдал мне одноименный файл. Далее в папке взятой с того же диска(с платой был) папка rootfs сделал там mount_ramdisk в папке mnt получил распакованную ФС, в папке bin заменил файл busybox на только что собранный и все это, всю ФС, скопировал на отформатированную в ext2 флэшку.
Где тут засада подскажите плз. Куда копать, я только начинаю осваивать эту область,так что сильно не пинайте :)
Либо нет файла или симлинка /sbin/init, либо он есть но неработоспособный, что может быть по нескольким причинам, вероятные:
1 Не совпадает abi ядра и бинарников в юзерспейсе
2 Не хватает динамических библиотек (busybox собран не статически а библиотеки uc/libc не скопированы)
3 В корневой фс лежат библиотеки libc а busybox собран с uclibc
4 или вообще busybox собран хостовым gcc для i386 а не кросскомпилятором (префикс задается в конфигураторе busybox)
Насчет abi не уверен как и насчет бибилиотек
Собирался кросс-компилятором arm-2007q1.
-----------------------------------------------------
Собрал busybox снова, сделал его статическим.
После загрузки платы получилась вот такая петрушка:
EXT3 FS on uba1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) on device 180:1.
devtmpfs: mounted
Freeing init memory: 124K
request_module: runaway loop modprobe binfmt-464c
после того как постоит пару минут говорит:
INFO: task swapper:1 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
swapper D c02c757c 0 1 0 0x00000000
[<c02c757c>] (schedule+0x290/0x2d4) from [<c02c798c>] (schedule_timeout+0x18/0x160)
[<c02c798c>] (schedule_timeout+0x18/0x160) from [<c02c772c>] (wait_for_common+0xd8/0x174)
[<c02c772c>] (wait_for_common+0xd8/0x174) from [<c0046f9c>] (call_usermodehelper_exec+0x90/0xac)
[<c0046f9c>] (call_usermodehelper_exec+0x90/0xac) from [<c004719c>] (__request_module+0x110/0x158)
[<c004719c>] (__request_module+0x110/0x158) from [<c0088d58>] (search_binary_handler+0x220/0x23c)
[<c0088d58>] (search_binary_handler+0x220/0x23c) from [<c0089720>] (do_execve+0x15c/0x264)
[<c0089720>] (do_execve+0x15c/0x264) from [<c002a940>] (kernel_execve+0x34/0x80)
[<c002a940>] (kernel_execve+0x34/0x80) from [<c0027598>] (init_post+0xa4/0xec)
[<c0027598>] (init_post+0xa4/0xec) from [<c00088b8>] (kernel_init+0xd0/0x100)
[<c00088b8>] (kernel_init+0xd0/0x100) from [<c00287d0>] (kernel_thread_exit+0x0/0x8)
что оно от меня хочет совершенно не понятно. понял что разговор про какой-то модуль идет
Там в rootfs от староого ядра никакие модули не остались случайно ? Возможно что-то собралось модулем и ядро не может подгрузить его. как проверить я уже писал - нужно все собирать статически.
В самом бизибоксе модулей вроде нет.. я так понимаю надо смотреть в ядре что бы модулей не было. Только что пересмотрел весь конфиг ядра, нигде нету ни одного модуля, везде статика. собрал ядро, результат тот же
Попробуй с моим скелетом rootfs собрать. http://sasamy.narod.ru/dataflash.sceleton.tar.gz
чтобы симлинки создались в busybox после cборки make сделай примерно так
#make CONFIG_PREFIX=/home/sasa/rootfs install
/home/sasa/rootfs - замени тем где у тебя будет скелет моей рутфс. Потом скопируй это на флэшку. Вообще это ругается ядро, и тем более он про ext3 сообщает - странно это, ты же говорил что в ext2 форматировал.
Ага, это я протупил. Флэшка 4 гига просто я с дуру взял и сказал убунте сделать ext2 на все 4 гига :) а она видать подумала что для такого размера будет лучше ext3 сделать :) Щас сделал раздел на 3 гига и попробовал свой вариант rootfs. на разметку диска больше не ругается,но основная картина та же. Щас попробую с Вашим скелетом
В ядре ничего не менял ? только busybox пересобирал ? Скинь куда-нибуть свой конфиг busybox. А еще лучше по шагам расскажи что сделал - а то ты говоришь что у тебя одно а на самом деле другое - то раздеов нет, то фс совсем другая.
Все получилось. Взял новое ядро 2.6.30.10 (всмысле свеже скачаное) распаковал, воткнул конфиг(make ARCH=arm at91sam9260ek_defconfig), сделал паре скриптов.. один зампускает make другой make menuconfig через крос-компилятор. Запустил make_menuconfig добавил нужную файловую систему, написал конфигурационную строку типа mem=32M console=/dev/ttyS0,115200 root=/dev/sda1 rw rootwait
выключил мне ненужные драйверы, сохранил и собрал. С бизивоксом поступил как сказал sasamy используя его "скелет", залил на флэшку и с тем что получилось загрузил плату. и все заработало. Пришлось только подправить немного /etc/init/rc.d/rc.s
Спасибо всем кто помогал впихнуть в мою голову понимание процесса :)