ЗАО «ЗЭО»

Техническая поддержка пользователей => Тион270, Тион-Про270, Сириус270 => Тема начата: lomaker от 26 Ноября, 2010, 12:52:51

Название: Работа с buildroot
Отправлено: lomaker от 26 Ноября, 2010, 12:52:51
Раньше никогда не сталкивался ни с микросистемами ни с кросс-компилированием.
Много букав потому как хочу полностью описать ситуацию :)
Ситуация такая - имеется новый Тион270 про с установленным Linux. Необходимо скомпилировать и установить на него некоторый набор программ из исходных текстов. В частности ssh и некоторые другие. Узнал что это делается не на самом Тионе а на отдельном ПК с Linux на борту и установленным buildroot. Стал искать какие-либо руководства по buildroot-у и ничего дельного не нашел. Даже просмотрев документацию http://buildroot.uclibc.org/downloads/buildroot.html ничего дельного о том как с ней работать там не увидел.
Вот что я понял(поправьте если не прав): начнем с того что для того чтобы сконфигурировать и собрать стандартный пакет нужно выполнить последовательно ./configure, make, make install. При этом пакет сконфигурируется и соберется под данную систему. Buildroot содержит свой gcc, собранный так, что даже на исходной системе он соберет программу под целевую платформу(в данном случае arm вроде). Для этого нужно запустить его из иерархии buildroot соответственно. Но для того чтобы собрать выкачанный из интернета пакет необходимо проделать все те же ./configure, make, make install - стало быть он соберется не под целевую систему. Тогда спрашивается как мне его собрать именно под нее? Возможно для этого нужно указать какие-то параметры утилите make(например путь к buildroot-овому gcc? Если да то какие именно?
1. Опишите пожалуйста подробно если возможно список необходимых действий и команд.
2. Знаю также что на тионе должны стоять библиотеки. Как их установить и где взять?
3. Если кто знает подскажите ссылки на руководства по buildroot и кросс-компиляции так сказать для чайников, потому как в тех же форумах описываются обычно пространные фразы, которые для начинающего как я ничего не говорят... :)

P.S. На PC с Linux развернут buildroot 2009.08.
Название: Re: Работа с buildroot
Отправлено: asv от 26 Ноября, 2010, 15:51:18
> Для этого нужно запустить его из иерархии buildroot соответственно

> необходимо проделать все те же ./configure, make, make install - стало быть он соберется не под целевую систему. Тогда
> спрашивается как мне его собрать именно под нее?

О чем речь, вы сами отвечаете на свой вопрос? Создайте необходимые файлы, чтобы Buildroot "видел" ваш "пакет". Как это сделать: (1) написано в документации, (2) много рабочих примеров и возможных вариантов в <buildroot>/package.


> 2. Знаю также что на тионе должны стоять библиотеки. Как их установить и где взять?

Их можно скопировать, но если в скрипте настройки "пакета" библиотеки есть install, то лучше пользоваться им, указывая ему куда ставить.

> какие-то параметры утилите make
> которые для начинающего как я ничего не говорят

Buildroot сделан на make и kbuild, используется autoconf и прочее. Разберитесь как это работает и всё будет понятно.

Название: Re: Работа с buildroot
Отправлено: lomaker от 27 Ноября, 2010, 07:50:44
Цитировать
Создайте необходимые файлы, чтобы Buildroot "видел" ваш "пакет". Как это сделать: (1) написано в документации, (2) много рабочих примеров и возможных вариантов в <buildroot>/package.

Допустим я сделал так чтобы buildroot увидел мой пакет - как я понял нужно создать файлы config.in и .mk файл. Даже нет - пускай возьмем уже готовый пример из <buildroot>/package openssh.
1. Какую/какие команды ему дать для сборки данного пакета(ну и его зависимостей)? Находясь в папке <buildroot>/package/openssh сделать make?
2. Откуда потом выцарапывать собранный пакет - из build?
Название: Re: Работа с buildroot
Отправлено: asv от 27 Ноября, 2010, 17:33:30
> 1. Какую/какие команды ему дать для сборки данного пакета(ну и его зависимостей)? Находясь в папке <buildroot>/package/openssh сделать make?

Нет, не из package/openssh, в таком случае не будет "окружения" Buildroot.

Две возможности:
1. Указать openssh в .config при 'make menuconfig' или в текстовом редакторе и сделать 'make'
(Для 'make BOARD=tion270' изменения должны быть в local/tion270/tion270.config). При этом возможно
будут созданы требуемые образы корневой файловой системы.

2. Или без изменения .config, если известно название цели из make-файлов, то 'make openssh'
(из директории <buildroot>). При выполнении пункта 1 в своё время будет выполнен и пункт 2.

Результаты будут в <buildroot>/build_arm/openssh* -- директория сборки;
<buildroot>/project_build_arm/tion270/root -- директория установки (в ней файлы обрабатываются strip'ом).
Некоторые файлы, требуемые для сборки других пакетов, будут скопированы в <buildroot>/build_arm/staging_dir
Название: Re: Работа с buildroot
Отправлено: lomaker от 01 Декабря, 2010, 09:24:48
Попробовал собрать пакет по вашей инструкции, но при заливке на Тион и запуске любого из собранных приложений выдается ошибка "Illegal instruction".
Опишу свои действия:
1. Скачал оригинальный Buildroot: http://www.buildroot.org/downloads/buildroot-2009.08-rc3.tar.gz
2. Скачал патч с вашего сайта: http://www.zao-zeo.ru/media/files/rootfs/buildroot/buildroot-2009.08_20100713.tar.gz
3. Распаковал Buildroot и наложил патч. Патч установился без нареканий.
4. Скопировал файл конфигурации из buildroot-2009.08-rc3/local/tion270/tion270.config в buildroot-2009.08-rc3/.config
5. Выполнил make oldconfig
6. Выполнил make menuconfig. Выбрал Target Architecture - arm, Target Architecture Variant - arm920t, в Package Selection for the target выбрал openssh. Остальные настройки оставил как есть.
7. Сделал exit.
8. Скопировал измененный файл .config в  local/tion270/tion270.config
9. Выполнил make BOARD=tion270. В процессе компиляции программа скачала ядро 2.6.30.5.tar(Кстати на самом Тионе ядро 2.6.22.19 - почему тогда в настройках указано другое?). Далее начала сборку - busybox, gcc и т.п. В процессе правда вываливался с ошибками на не-gzip архив, но путем перекачки пакетов вручную и заменой проблемы все устранил.
После установки скопировал собранный openssh и его файлы из иерархии <buildroot>/project_build_arm/tion270/root. Залил на Тион. При запуске выдал описанную выше ошибку. Попытался скопировать эти же файлы из <buildroot>/build_arm/openssh(и openssl) - тот же эффект. Кстати заметил что размер файлов в директориях <buildroot>/project_build_arm/tion270/root отличается от размера этих же файлов из директории <buildroot>/build_arm/openssh.
Уж и не знаю что я сделал не так? Может быть нужно было запустить компиляцию с опцией ARCH=arm?
Название: Re: Работа с buildroot
Отправлено: asv от 01 Декабря, 2010, 10:25:27
Вы писали (в удалённом сообщении) что у вас Тион-Про2. У него процессор EP9315 ARMv4, вы собираете для PXA270 ARMv5.

Вместо
>.config в  local/tion270/tion270.config
> Выполнил make BOARD=tion270
делайте как указано в
http://zao-zeo.ru/dokuwiki/doku.php/linux#различные_сборки_кфс
раздел "Для плат на базе EP93xx".

Т.е. вам нужно использовать BOARD=tion и local/tion/tion.config
Название: Re: Работа с buildroot
Отправлено: lomaker от 01 Декабря, 2010, 10:33:28
В удаленном сообщении я писал что у бывшего программиста buildroot был развернут для Тиона-Про2. Сейчас вводим в эксплуатацию еще и Тион 270 Про. Так что вроде все должно быть верно.
Название: Re: Работа с buildroot
Отправлено: asv от 01 Декабря, 2010, 10:43:08
Тион-Про270

> Выполнил make menuconfig. Выбрал Target Architecture - arm, Target Architecture Variant - arm920t, в Package Selection for the target выбрал openssh. Остальные настройки оставил как есть.

Зачем arm920t, если было xscale?

> buildroot-2009.08-rc3.tar.gz

Не очень важно, но зачем -rc3?

> openssh

openssh нужно принципиально? В настройках включён dropbear.

> программа скачала ядро 2.6.30.5.tar(Кстати на самом Тионе ядро 2.6.22.19 - почему тогда в настройках указано другое?)

Ядро нужно ради .h-файлов, на плате ядро другой версии, в целом это не имеет отношения к вашей проблеме и нормально.

> Кстати заметил что размер файлов в директориях <buildroot>/project_build_arm/tion270/root отличается от размера этих же файлов из директории <buildroot>/build_arm/openssh.

Напомню: <buildroot>/project_build_arm/tion270/root -- директория установки (в ней файлы обрабатываются strip'ом).

> запустить компиляцию с опцией ARCH=arm?

Buldroot сам это делает.
Название: Re: Работа с buildroot
Отправлено: lomaker от 01 Декабря, 2010, 10:58:31
Огромное спасибо за оперативный ответ!!!

> Зачем arm920t, если было xscale?

Странно, но в интернете нашел информацию что pxa270 и arm920t из одной оперы, взять хотя бы ссылочку http://www.bigbasketvalue.com/-ViewSonic-V212-003-ARM-ARM920T-PXA27x-180MHz-128MB-64MB-104-Touchscreen-Tablet-Windows-CE-v50-wDocking-Station_p_5129.html

> Не очень важно, но зачем -rc3?

Скопировал ссылочку с вашего форума :)

> openssh нужно принципиально? В настройках включён dropbear.

Честно говоря с dropbear никогда не работал, использовал ssh. В принципе не суть важно! Пускай сборка ssh будет своего рода первый блин работы с buildroot :)

Одним словом как я понял все грабли были в опции arm920t, стало быть будем пересобирать с xscale.
И всетаки откуда после сборки доставать готовые программы? :-[
Название: Re: Работа с buildroot
Отправлено: lomaker от 01 Декабря, 2010, 13:45:14
Пересобрал с xscale - не помогло! Та же ошибка - Illegal instruction.
Может я что не так делаю? Может неправильно заливаю файлы - при первой неудачной установке openssh посмотрел в какие папки и какие файлы он устанавливает в иерархии <buildroot>/project_build_arm/tion270/root/ и в этот раз просто взял, скопировал их с сохранением иерархии без остальных программ и создал из этого архив, который затем скопировал в корень на Тионе и разархивировал. Таким образом файлы встали на свои места.
Название: Re: Работа с buildroot
Отправлено: asv от 01 Декабря, 2010, 13:56:40
Отправьте мне файл при запуске которого возникает "Illegal instruction"
Название: Re: Работа с buildroot
Отправлено: asv от 01 Декабря, 2010, 14:39:47
При включении платы или по dmesg|head какая строка про дату сборки ядра?
Название: Re: Работа с buildroot
Отправлено: lomaker от 01 Декабря, 2010, 16:47:04
ничего если вышлю весь архив? там 4,2М. но только завтра(и дату сборки тоже), так как сейчас пишу из дома.
Название: Re: Работа с buildroot
Отправлено: asv от 01 Декабря, 2010, 18:34:12
Ничего
Название: Re: Работа с buildroot
Отправлено: lomaker от 02 Декабря, 2010, 04:17:09
Дата сборки ядра:

root@tion270:~ dmesg|head
[    0.000000] Linux version 2.6.22.19 (asv@phenom) (gcc version 4.2.4 (Debian 4
.2.4-6)) #1 Wed Sep 23 10:14:43 MSD 2009
[    0.000000] CPU: XScale-PXA270 [69054117] revision 7 (ARMv5TE), cr=0000397f
[    0.000000] Machine: Tion-Pro270 Board
[    0.000000] Ignoring unrecognised tag 0x00000000
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 32768
[    0.000000]   DMA zone: 256 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 32512 pages, LIFO batch:7
[    0.000000]   Normal zone: 0 pages used for memmap

Файлик выслал вам на ящик.
Название: Re: Работа с buildroot
Отправлено: asv от 02 Декабря, 2010, 14:55:58
> запуске любого из собранных приложений выдается ошибка "Illegal instruction".

Какое именно приложение?

sshd из вашего архива запускается и работает (как и ssh-keygen). В поисковиках можно найти проблему "illegal instruction" связанную с libcrypto.
Название: Re: Работа с buildroot
Отправлено: asv от 02 Декабря, 2010, 15:07:09
Пришлите мне binaries/tion270/rootfs.arm.jffs2 из buldroot.
Название: Re: Работа с buildroot
Отправлено: lomaker от 03 Декабря, 2010, 07:46:38
> Какое именно приложение?

ни /usr/sbin/sshd ни /usr/bin/ssh ни /usr/bin/ssh-keygen ни какие другие из архива.
как вы делали - разархивировали у себя весь архив находясь в корне(/) и попытались запустить, или просто отдельно ssh?
Кстати там же в архиве есть /lib/libcrypt-0.9.30.3.so ну и ссылка на него(libcrypt.so.0). Файла libcrypto у меня нет даже на Тионе:

root@tion270:/lib ls -la | grep libcr
-rw-r--r--    1 1000     root        13043 Nov 29 12:09 libcrypt-0.9.30.1.so
-rwxr-xr-x    1 1000     root        12988 Dec  1 18:13 libcrypt-0.9.30.3.so
-rwxr-xr-x    1 root     root        22120 Feb  2  2009 libcrypt-2.3.6.so
lrwxrwxrwx    1 1000     root           20 Dec  1 18:37 libcrypt.so.0 -> libcrypt-0.9.30.3.so
lrwxrwxrwx    1 root     root           17 Mar 31  2009 libcrypt.so.1 -> libcrypt-2.3.6.so

Вот на всякий случай вывод strace:
execve("/usr/sbin/sshd", ["/usr/sbin/sshd"], [/* 10 vars */]) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0
--- SIGILL (Illegal instruction) @ 0 (0) ---
+++ killed by SIGILL +++
Process 1546 detached
Название: Re: Работа с buildroot
Отправлено: asv от 03 Декабря, 2010, 10:29:02
> как вы делали - разархивировали у себя весь архив находясь в корне(/) и попытались запустить, или просто отдельно ssh?

Копировал из архива и запускал.
Название: Re: Работа с buildroot
Отправлено: lomaker от 03 Декабря, 2010, 11:24:12
как же быть?!!! работа встала!!! выручайте!!!
если нужно что еще отправить - говорите - например лог gdb...?
Название: Re: Работа с buildroot
Отправлено: asv от 03 Декабря, 2010, 12:11:44
Проверьте память в U-Boot: mtest
Название: Re: Работа с buildroot
Отправлено: lomaker от 03 Декабря, 2010, 12:40:36
Запустил mtest. Пока сканирует. Вот гляньте еще вывод gdb(попытался вывести листинг для файла из <buildroot>/build_arm/openssh. Может конечно что не так сделал) :

root@tion270:/ gdb -q
(gdb) file /usr/sbin/sshd
Reading symbols from /usr/sbin/sshd...done.
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) list
1       /home/chin/workspace/BuildRoot/1/buildroot-2009.08-rc3/toolchain_build_a
rm/gcc-4.3.4/libgcc/../gcc/config/arm/lib1funcs.asm: No such file or directory.
        in /home/chin/workspace/BuildRoot/1/buildroot-2009.08-rc3/toolchain_buil
d_arm/gcc-4.3.4/libgcc/../gcc/config/arm/lib1funcs.asm
(gdb) quit
Название: Re: Работа с buildroot
Отправлено: asv от 03 Декабря, 2010, 13:52:03
Есть предположение, что у вас сейчас ядро (судя по дате) и КФС с OABI, в конфигурации по умолчанию Buildroot собирает с EABI. Я попробую проверить такой вариант и сообщю.

Название: Re: Работа с buildroot
Отправлено: lomaker от 03 Декабря, 2010, 17:12:18
хороше, буду ждать результата!