ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Работа с buildroot  (Прочитано 17078 раз)

0 Пользователей и 1 Гость просматривают эту тему.

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Работа с buildroot
« : 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.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Работа с buildroot
« Ответ #1 : 26 Ноября, 2010, 15:51:18 »

> Для этого нужно запустить его из иерархии buildroot соответственно

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

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


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

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

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

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

Записан

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Re: Работа с buildroot
« Ответ #2 : 27 Ноября, 2010, 07:50:44 »

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

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

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Работа с buildroot
« Ответ #3 : 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
Записан

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Re: Работа с buildroot
« Ответ #4 : 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?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Работа с buildroot
« Ответ #5 : 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
Записан

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Re: Работа с buildroot
« Ответ #6 : 01 Декабря, 2010, 10:33:28 »

В удаленном сообщении я писал что у бывшего программиста buildroot был развернут для Тиона-Про2. Сейчас вводим в эксплуатацию еще и Тион 270 Про. Так что вроде все должно быть верно.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Работа с buildroot
« Ответ #7 : 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 сам это делает.
Записан

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Re: Работа с buildroot
« Ответ #8 : 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.
И всетаки откуда после сборки доставать готовые программы? :-[
Записан

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Re: Работа с buildroot
« Ответ #9 : 01 Декабря, 2010, 13:45:14 »

Пересобрал с xscale - не помогло! Та же ошибка - Illegal instruction.
Может я что не так делаю? Может неправильно заливаю файлы - при первой неудачной установке openssh посмотрел в какие папки и какие файлы он устанавливает в иерархии <buildroot>/project_build_arm/tion270/root/ и в этот раз просто взял, скопировал их с сохранением иерархии без остальных программ и создал из этого архив, который затем скопировал в корень на Тионе и разархивировал. Таким образом файлы встали на свои места.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Работа с buildroot
« Ответ #10 : 01 Декабря, 2010, 13:56:40 »

Отправьте мне файл при запуске которого возникает "Illegal instruction"
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Работа с buildroot
« Ответ #11 : 01 Декабря, 2010, 14:39:47 »

При включении платы или по dmesg|head какая строка про дату сборки ядра?
Записан

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Re: Работа с buildroot
« Ответ #12 : 01 Декабря, 2010, 16:47:04 »

ничего если вышлю весь архив? там 4,2М. но только завтра(и дату сборки тоже), так как сейчас пишу из дома.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Работа с buildroot
« Ответ #13 : 01 Декабря, 2010, 18:34:12 »

Ничего
Записан

lomaker

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 22
Re: Работа с buildroot
« Ответ #14 : 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

Файлик выслал вам на ящик.
Записан