LINUX.ORG.RU

[ARM kernel] Freeing init memory и тишина


0

0

имеется:
маленькая платка с ARM (COM, Ethernet, VGA, U-boot)
linux-2.6.20.21 с патчами от производителя железяки и дефолтным конфигом от них же
свой toolchain (arm-ep9312-linux-gnueabi-) gcc 4.3.4 с патчами для MaverickCrunch FPU http://simplemachines.it/tools/
собранные этим тулчейном вышеупомянутое ядро и busybox

в у-буте получаю ядро по tfpt
гружу с bootargs ip=192.168.113.219 root=/dev/nfs nfsroot=192.168.113.1:/home/diskless/192.168.113.219,hard rw console=ttyAM0,57600 video=ep93xxfb:vout=1,vmode=16
рут монирует нормально (также, до nfs, были теже проблемы и с /dev/sda1)
после "Freeing init memory: 120K" стоит молчит
с init=/bin/bb (статически скомпиленый бизибокс) тоже самое
с init= статически скомпиленый "hello world" (и "hello new file", создающий файлик в /) опять тоже самое
с дуру даже пробовали init который летит в сегфолт, вроде как ядро должно написать, что такая-то прога свалилась. нет, молчит :(

интересуют следующие вопросы:
- что же ядро обычно пишет если init "не тот"? я всегда думал, что "attemt to kill init" или "init not found", ну или уж как баш - "Illegal instruction". здесь же получается, что какбудто init работает..
- может ли быть так, что скомпиленое ядро одинм тулчейном работает, а скомпиленый бизибокс этим же тулчейном "неработает"?
- ну и основной вопрос - куда вообще копать и что же происходит?


>здесь же получается, что какбудто init работает

- "Freeing init memory" к юзерспейсному init отношения не имеет, это ядро освобождает память которая в модулях помечена макросами __init. Похоже что до настоящего init дело как раз не доходит.
- в ядре fpu не используется, поэтому вполне вероятно разное поведение ядра и пользовательских программ
- я бы поискал патчи для kgdb для этой версии ядра. Если вслепую тыкаться - собрать root с soft-float, поотключать драйверы навсякий случай кроме serial на котором висит консоль, кстати - framebuffer работает или лог смотришь через debug-console на последовательном терминале ?

imhotep
()
Ответ на: комментарий от imhotep

> Похоже что до настоящего init дело как раз не доходит.
если инита нет, то ядро паникует с init not found. как будьто бы доходит
> в ядре fpu не используется, поэтому вполне вероятно разное поведение ядра и пользовательских программ

в програмах hello world вродебы тоже fpu не используется, однако и они не работают :(
> framebuffer работает или лог смотришь через debug-console на последовательном терминале ?

фреймбуффер работает. лог выводится на него вместе с лого-пингвином, если убрать console=ttyAM0,57600
лог смотрю там же, где кручу u-boot - на последовательном терминале

yekm
() автор топика

А ты для init'а библиотеки из тулчейна предоставил все? У меня в /lib их достаточно много:ld-linux.so, libc.so и др., все не помню.

gogi
()
Ответ на: комментарий от yekm

>если инита нет, то ядро паникует с init not found. как будьто бы
доходит

Посмотри в конфиге ядра опции
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y

imhotep
()

Почему ты считаешь, что root смонтировался нормально?

> куда вообще копать и что же происходит?

Вкрячивай отладочную печать в загрузчик ELF, и смотри, как происходит загрузка. Или влезь туда же отладчиком.

tailgunner ★★★★★
()
Ответ на: комментарий от gogi

вобщем всё заработало. радости - полные штаны. всем большое спасибо. :)

> А ты для init'а библиотеки из тулчейна предоставил все? У меня в /lib их достаточно много:ld-linux.so, libc.so и др., все не помню.

да, все. но есть статические бинарники..
> CONFIG_AEABI=y

я балбес :)
хотел же поэкспериментировать с этой опцией и спросить тут про неё. дк нет, забыл. мне один коллега просто как-то сказал, что эта опция влияет на ABI только "внутри" ядра. он ошибался. а я савсем запамятовал про неё :(
> Почему ты считаешь, что root смонтировался нормально?

ну ошибок нет.. да и пишет же что "VFS: Mounted root bla bla.."

добавлю насчёт завершения инита: когда он нормально завершается (я выхожу из бизибокса который был init=/bin/bb) то ядро действительно паникует "Kernel panic - not syncing: Attempted to kill init!"

yekm
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.