|
|
  |
AT91RM9200 + Angstron linux, консоль? |
|
|
|
Nov 3 2008, 22:46
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(amw @ Nov 3 2008, 18:02)  Если все таки busybox - скомпилируйте его статически. Скомпилировал. Выросла до 1.6 Мб. Результат все тот же Kernel panic - not syncing: Attempted to kill init! Цитата(dch @ Nov 3 2008, 20:24)  Когдато было что подобное - я просто посмотрел по текстам где выдается собщение: Посмотрел ядро на предмет этого текста - вываливается, когда завершается процес init. Глубже копнуть не хватает опыьа
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Nov 4 2008, 08:52
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Dron_Gus @ Nov 4 2008, 00:46)  Скомпилировал. Выросла до 1.6 Мб. Результат все тот же Kernel panic - not syncing: Attempted to kill init! ОК. Пока так и оставте. Если root=/dev/sda1 то 1. Убедитесь, что на этом самом /dev/sda1 есть /bin/busybox 2. Убедитесь что /bin/init ссылка на /bin/busybox. 3. Убедитесь что /bin/sh ссылка на /bin/busybox. 4. Видимо это должно быть первым  . А какя ФС на /dev/sda1? Надеюсь не FAT. Она не поддерживает ссылки. 5. Если не помогает и/или если ФС - FAT попробуйте такое: - задайте в командной строке init=/bin/busybox - Перезагрузите. - Если с busybox все ОК, то вы увидите что-то типа Код BusyBox v1.10.2 (Debian 1:1.10.2-2) multi-call binary Copyright (C) 1998-2007 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice.
Usage: busybox [function] [arguments]... or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as!
Currently defined functions: [, [[, adjtimex, arping, ash, awk, basename, brctl, bunzip2, bzcat, bzip2, cal, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cpio, cut, date, dc, dd, deallocvt, df, dirname, dmesg, dos2unix, du, dumpkmap, echo, egrep, env, expr, false, fgrep, find, fold, free, ftpget, ftpput, getopt, grep, gunzip, gzip, head, hexdump, hostid, hostname, httpd, id, ifconfig, ip, ipcalc, kill, killall, klogd, last, length, ln, loadfont, loadkmap, logger, logname, logread, losetup, ls, lzmacat, md5sum, mkdir, mkfifo, mknod, mktemp, more, mount, mt, mv, nameif, nc, netstat, nslookup, od, openvt, patch, pidof, ping, ping6, printf, ps, pwd, rdate, readlink, realpath, renice, reset, rm, rmdir, route, rpm, rpm2cpio, run-parts, sed, setkeycodes, sh, sha1sum, sleep, sort, start-stop-daemon, strings, stty, swapoff, swapon, sync, sysctl, syslogd, tac, tail, tar, tee, telnet, test, tftp, time, top, touch, tr, traceroute, true, tty, umount, uname, uncompress, uniq, unix2dos, unlzma, unzip, uptime, usleep, uudecode, uuencode, vi, watch, watchdog, wc, wget, which, who, whoami, xargs, yes, zcat Естественно, что busybox завершится и будет Kernel panic. Но если вы увидите такое сообщение, то вероятно у Вас либо FAT (нет симлинка /bin/sh на /bin/busybox), либо нет shell по умолчанию в конфигурации busybox. Или может нет самого /bin/init. В случае busybox у Вас по идее будет один исполняемый файл - /bin/busybox, а все остальное симлинки на него. Цитата Посмотрел ядро на предмет этого текста - вываливается, когда завершается процес init. Глубже копнуть не хватает опыьа  Это нормальное поведение когда завершается init. В нормальных условиях такого быть не может. Если init завершился (не важно по какой причине - ошибка или его убили вручную, или невозможно его запустить) то Kernel panic. init не может завершится. Он должен работать всегда.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Nov 4 2008, 11:34
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
2 AVR, фишка данного дистра в простоте установки (как я надеялся). Ну и в наличии большого количества пакетов в виде готовых скриптов для установки. Типа не надо качать, патчить, собирать. Все делается автоматом. Цитата(amw @ Nov 4 2008, 11:52)  ОК. Пока так и оставте. Если root=/dev/sda1 то 1. Убедитесь, что на этом самом /dev/sda1 есть /bin/busybox 2. Убедитесь что /bin/init ссылка на /bin/busybox. 3. Убедитесь что /bin/sh ссылка на /bin/busybox. 4. Видимо это должно быть первым  . А какя ФС на /dev/sda1? Надеюсь не FAT. Она не поддерживает ссылки. 5. Если не помогает и/или если ФС - FAT попробуйте такое: - задайте в командной строке init=/bin/busybox - Перезагрузите. - Если с busybox все ОК, то вы увидите что-то типа Естественно, что busybox завершится и будет Kernel panic. Но если вы увидите такое сообщение, то вероятно у Вас либо FAT (нет симлинка /bin/sh на /bin/busybox), либо нет shell по умолчанию в конфигурации busybox. Или может нет самого /bin/init. В случае busybox у Вас по идее будет один исполняемый файл - /bin/busybox, а все остальное симлинки на него. 1. + 2. - ls /sbin/ -l lrwxrwxrwx 1 1000 1000 19 Nov 4 2008 init -> /sbin/init.sysvinit -rwxr-xr-x 1 1000 1000 27496 Nov 1 2008 init.sysvinit В /bin/ init'а нет. 3. ls /bin -l lrwxrwxrwx 1 root root 7 Jan 1 00:06 sh -> busybox 4. ext2 5. Kernel panic - not syncing: Attempted to kill init! Хм... Я в этой жини чего-то не понимаю.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Nov 4 2008, 13:32
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Dron_Gus @ Nov 4 2008, 13:34)  1. +
2. -
ls /sbin/ -l
lrwxrwxrwx 1 1000 1000 19 Nov 4 2008 init -> /sbin/init.sysvinit -rwxr-xr-x 1 1000 1000 27496 Nov 1 2008 init.sysvinit В /bin/ init'а нет. А что такое /sbin/init.sysvinit ? Самостоятельный исполняемый файл? Или скрипт? Если исполняемый (в смысле полученный компиляцией из *.c файла) то либо его скомпилить статически либо положыть нужные ему либы в /lib Цитата 3.
ls /bin -l
lrwxrwxrwx 1 root root 7 Jan 1 00:06 sh -> busybox
4. ext2 Цитата 5. Kernel panic - not syncing: Attempted to kill init!
Хм... Я в этой жини чего-то не понимаю. ?? Если не передавать ядру init=blah-blah-blah то исполняется штатный init. init - это процесс, который делает все в системе, кроме того, что делает ядро. Он должен работать все время, пока не выключится питание. Потому как все равно "Kernel panic - not syncing: Attempted to kill init!" то нужно разобраться с этим init. Вот теперь, когда busybox статический попробуйте init=/bin/sh И убедитесь, что busybox таки статический. Код arm-как-там-у вас-readelf -d busybox Если есть что-то типа Код Dynamic section at offset 0xb92d8 contains 23 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [libncurses.so.5] 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x000000000000000c (INIT) 0x41b260 0x000000000000000d (FINI) 0x490234 0x0000000000000004 (HASH) 0x400240 0x000000006ffffef5 (GNU_HASH) 0x4030d0 0x0000000000000005 (STRTAB) 0x411b18 0x0000000000000006 (SYMTAB) 0x406490 0x000000000000000a (STRSZ) 30183 (bytes) 0x000000000000000b (SYMENT) 24 (bytes) 0x0000000000000015 (DEBUG) 0x0 0x0000000000000003 (PLTGOT) 0x6b94a0 0x0000000000000002 (PLTRELSZ) 4344 (bytes) 0x0000000000000014 (PLTREL) RELA 0x0000000000000017 (JMPREL) 0x41a168 0x0000000000000007 (RELA) 0x41a0a8 0x0000000000000008 (RELASZ) 192 (bytes) 0x0000000000000009 (RELAENT) 24 (bytes) 0x000000006ffffffe (VERNEED) 0x41a038 0x000000006fffffff (VERNEEDNUM) 2 0x000000006ffffff0 (VERSYM) 0x419100 0x0000000000000000 (NULL) 0x0 значит он не статический. Проверте то-же и для /sbin/init Для статических будет такое Код arm-как-там-у вас-readelf -d busybox
There is no dynamic section in this file.
Сообщение отредактировал amw - Nov 4 2008, 13:47
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Nov 4 2008, 23:31
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(amw @ Nov 4 2008, 16:32)  А что такое /sbin/init.sysvinit ? Самостоятельный исполняемый файл? Или скрипт? Самостоятельный исполняемый. Код arm-angstrom-linux-gnueabi-readelf -d busybox There is no dynamic section in this file. Код arm-angstrom-linux-gnueabi -readelf -d init.sysvinit Dynamic section at offset 0x6184 contains 24 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000000c (INIT) 0x93f8 0x0000000d (FINI) 0xd874 0x00000019 (INIT_ARRAY) 0x16178 0x0000001b (INIT_ARRAYSZ) 4 (bytes) 0x0000001a (FINI_ARRAY) 0x1617c 0x0000001c (FINI_ARRAYSZ) 4 (bytes) 0x00000004 (HASH) 0x8148 0x00000005 (STRTAB) 0x8cb0 0x00000006 (SYMTAB) 0x8620 0x0000000a (STRSZ) 811 (bytes) 0x0000000b (SYMENT) 16 (bytes) 0x00000015 (DEBUG) 0x0 0x00000003 (PLTGOT) 0x1626c 0x00000002 (PLTRELSZ) 768 (bytes) 0x00000014 (PLTREL) REL 0x00000017 (JMPREL) 0x90f8 0x00000011 (REL) 0x90d0 0x00000012 (RELSZ) 40 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x6ffffffe (VERNEED) 0x90b0 0x6fffffff (VERNEEDNUM) 1 0x6ffffff0 (VERSYM) 0x8fdc 0x00000000 (NULL) 0x0 libc.so.6 присутствует в /lib. Код -rwxr-xr-x 1 1000 1000 1127916 Nov 2 00:12 libc-2.6.1.so lrwxrwxrwx 1 root root 14 Jan 1 1998 libc.so -> /lib/libc.so.6 lrwxrwxrwx 1 1000 1000 13 Nov 4 14:54 libc.so.6 -> libc-2.6.1.so Попробую пересобрать инит статически, если это возможно. Цитата(amw @ Nov 4 2008, 16:32)  Вот теперь, когда busybox статический попробуйте init=/bin/sh Вот строка с которой пытался запустить. Код mem=64M console=ttyS0,115200 root=/dev/sda1 rootwait init=/bin/sh Результат все тот же Код Freeing init memory: 108K Kernel panic - not syncing: Attempted to kill init! Цитата(amw @ Nov 4 2008, 16:32)  Если не передавать ядру init=blah-blah-blah то исполняется штатный init. init - это процесс, который делает все в системе, кроме того, что делает ядро. Он должен работать все время, пока не выключится питание.
Потому как все равно "Kernel panic - not syncing: Attempted to kill init!" то нужно разобраться с этим init. В том то и дело, что если не передавать ядру init=... то просто тишина. Нет приглашения логиниться. Но ядро же не паникует! Т.е. я делаю вывод о том, что init правильный. Проосто в скрипте инициалиации чего-то не хватает для запуска getty или чего-то подобного на ttyS0. Или я не правильно рассуждаю?
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Nov 5 2008, 09:14
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Dron_Gus @ Nov 5 2008, 01:31)  Самостоятельный исполняемый. Хм. А откуда он? Например для init -> /bin/busybox формат файла /etc/inittab будет другой (не такой как для обычного init используемого в ПК). Возможно тут есть подвох. Цитата Код arm-angstrom-linux-gnueabi-readelf -d busybox There is no dynamic section in this file. Это хорошо. Для начала упростим себе жизнь. Цитата Код arm-angstrom-linux-gnueabi -readelf -d init.sysvinit Dynamic section at offset 0x6184 contains 24 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libc.so.6] ... libc.so.6 присутствует в /lib. Это хорошо, но! Нужен по крайней мере еще и ld.so. Используются различные имена для ссылок на него. Например: Код $ ls -l /lib|grep ld- -rwxr-xr-x 1 root root 119288 жов 13 17:50 ld-2.7.so lrwxrwxrwx 1 root root 34 жов 29 14:40 ld-linux.so.2 -> /emul/ia32-linux/lib/ld-linux.so.2 lrwxrwxrwx 1 root root 9 жов 29 14:40 ld-linux-x86-64.so.2 -> ld-2.7.so Это на ПК 64 бит система. У Вас будет типа такого Код $ ls -l /lib|grep ld- -rwxr-xr-x 1 root root 121440 жов 13 17:51 ld-2.7.so lrwxrwxrwx 1 root root 9 жов 29 14:40 ld-linux.so.2 -> ld-2.7.so Это динамический линкер - нужен для динамической линковки. Ну и любая динамическая либа может быть слинкована с другой, что не обязательно фигурирует в исполняемом файле. Убедитесь, что библиотеки в /lib используют то-же ABI что и ядро. То же относится к busybox независимо от того как он слинкованЦитата Код -rwxr-xr-x 1 1000 1000 1127916 Nov 2 00:12 libc-2.6.1.so lrwxrwxrwx 1 root root 14 Jan 1 1998 libc.so -> /lib/libc.so.6 lrwxrwxrwx 1 1000 1000 13 Nov 4 14:54 libc.so.6 -> libc-2.6.1.so Попробую пересобрать инит статически, если это возможно. Вот строка с которой пытался запустить. Код mem=64M console=ttyS0,115200 root=/dev/sda1 rootwait init=/bin/sh Результат все тот же Код Freeing init memory: 108K Kernel panic - not syncing: Attempted to kill init! В том то и дело, что если не передавать ядру init=... то просто тишина. Нет приглашения логиниться. Но ядро же не паникует! Т.е. я делаю вывод о том, что init правильный. Проосто в скрипте инициалиации чего-то не хватает для запуска getty или чего-то подобного на ttyS0. Или я не правильно рассуждаю? Вроде правильно. Тогда, используя /sbin/init (не перопределяя его в командной строке) попробуем следующее. 1. Есть ли /dev/console 2. Есть ли /dev/ttyS0 3. Упростите /etc/inittab примерно до такого (соблюдая формат Вашего init) Код id:5:initdefault: S:12345:respawn:/sbin/getty 115200 ttyS0 4. /sbin/getty -> /bin/busybox ?? Или самостоятельный исполняемый? А может ему передать /dev/ttyS0? 5. Проверяем, сконфигурирован ли busybox с поддержкой init и выключаем его. 6. Попробуйте написать свою простейшую программу типа int main() { fprintf(stdout, "Hello\n"); fprintf(stder, "Hello\n"); return 0; } Скомпилировать ее статически и подсунуть ее init=/bin/your_test_prog Что получится? Компилятор по умолчанию создает исполняемые файлы в формате gnueabi? Следите за тем, чтобы все программы были в том же формате, что и ядро. Включая glibc.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Nov 7 2008, 20:13
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
1. да 2. да 3. ничего не изменилось.  4. отдельный исполняемый файл.проверил, все либы есть. 5 и 6 не получается пока что.  Провел эксперимент: взял гоотвый инит из образа от rainbow, изменил линк init->busybox: Freeing init memory: 116K System halted.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Dec 27 2008, 23:59
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Удалось запустить?  Я вот тоже с этим Angstrom бьюсь - скачал тестовый образ с сайта - Kernel panic - not syncing: Attempted to kill init! Собрал свой образ (OpenEmbedded + bitbake, остальное само из инета тянулось, включая компилятор, собиралось несколько часов), запускаю через NFS: Kernel panic - not syncing: Attempted to kill init! Самосборное с USB флэшки: Kernel panic - not syncing: Attempted to kill init! Просто беда... =( Плата - cs-ep9302...
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|