Инструменты пользователя

Инструменты сайта


wiki:angstrom_blueshark

Компиляция Angstrom Linux для BlueShark

Очень полезная документация для тех, кто хочет в совершенстве овладеть приемами работы с OpenEmbedded: http://docs.openembedded.ru/index.html

Процедура сборки Angstrom Linux проверена на машинах:

  • Ubuntu 9.10

Для компиляции Angstrom Linux потребуется около 15ГБ свободного места на диске. Время компиляции сильно зависит от:

  • Скорости Internet, т.к. все исходники выкачиваются с глобальных серверов
  • Мощности процессора (рекомендуется иметь процессор не ниже Intel Core2 Duo 3ГГц)
  • Объема оперативной памяти (рекомендуется 2ГБ)

На одноядерном процессоре время компиляции может занимать сутки.

Утилиты необходимые для сборки

* Python (версии 2.4.0 или более поздней), а также возможно ряд файлов которые иногда включают в пакет с питоном иногда нет, если сборка bitbake не удалась попробуйте поставить пакет python-dev или python-devel, в завимости от дистрибутива название может отличаться

* GNU Patch (версии 2.5.9 или более поздней)

* GNU m4

* GNU make (Версии 3.80 или более поздней)

* Psyco JIT компилятор рекомендуется для ускорения сборки

* ccache

* perl (нужна версия новее 5.0, скорее всего >=5.6.2 подойдет)

* diffstat

* bitbake (bitbake должна быть версии 1.8.6, именно с этой версией тестировалась сборка)

* wget

* curl

* ftp

* cvs

* subversion

* git

* md5sum

* sha256sum

* tar

* bzip2

* gzip

* unzip

* Docbook DTDs и DSSSL stylesheets

* sgmltools, called «sgmltools-lite» too

* docbook-utils

* Texinfo версии выше 4.4

* texi2html

* GNU sed 4.x

* Bison

* bc

* mktemp

* help2man

Установка необходимых утилит в Debian и Ubuntu

apt-get install ccache sed wget cvs subversion git-core \
   coreutils unzip texi2html texinfo libsdl1.2-dev docbook-utils \
   gawk python-pysqlite2 diffstat help2man python-psyco

Angstrom Linux stable

За основу взяты инструкции отсюда: http://www.angstrom-distribution.org/building-angstrom

Ядро 2.6.29 stable

В настоящее время в стабильной ветке компилируется именно ядро 2.6.29.

Создание окружения

Данные инструкции предполагают компиляцию Angstrom Linux в домашней директории пользователя, поэтому убедитесь, что ней достаточно места (не менее 6-15ГБ).

Войдите в домашнюю директорию пользователя:

# cd

Выполните следующие команды, которые скачивают хранилище файлов OpenEmbedded:

export OETREE="${HOME}/OE"
mkdir -p ${OETREE} && cd ${OETREE}
git clone git://git.openembedded.org/openembedded.git openembedded
cd openembedded
git checkout origin/stable/2009 -b stable/2009

Обновите локальную копию хранилища OE:

cd ${OETREE}/openembedded
git pull

Создание конфигурации

Сначала необходимо установить переменные окружения, для этого скачайте скрипт в директорию ${OETREE}.

Чтобы создать конфигурацию OE именно для Beagleboard (BlueShark) выполните следующие действия:

1) Создайте директорию для файла конфигурации local.conf для платформы

mkdir -p ${OETREE}/build/conf 

2) Скопируйте пример конфигурации:

cp ${OETREE}/openembedded/contrib/angstrom/local.conf ${OETREE}/build/conf/

3) Добавьте в конец файла строку:

MACHINE="beagleboard"

Компиляция файловой системы

Вы можете не тратить несколько часов и взять готовую файловую систему отсюда http://mentorel.com/downloads/blueshark/ и сразу же перейти к компиляции ядра.

Обратите внимание, что файловая система с меткой stable относится к стабильной, т.е. получена по инструкциям, использованным в этом разделе.

  • Добавьте в конец файла »/etc/sysctl.conf» строку и перезагрузите Ubuntu:
vm.mmap_min_addr = 0
  • Установите переменные окружения:
cd ${OETREE}
source source-me.txt 
  • Зайдите в директорию OE:
cd ${OETREE}/openembedded 
  • Убедитесь, что репозиторий OpenEmbedded имеет последние обновления
git pull --rebase
  • Зайдите в директорию ${OETREE}/build, где будут хранится файлы:
cd ${OETREE}/build
  • Начинайте компиляцию образа для работы через консоль
bitbake console-image 

Чтобы собрать образ с поддержкой графического интерфейса наберите команду:

bitbake x11-image

Если появилось следующее сообщение об ошибке:

ERROR:  Openembedded's config sanity checker detected a potential misconfiguration.
	Either fix the cause of this error or at your own risk disable the checker (see sanity.conf).
	Following is the list of potential problems / advisories:

	Using dash as /bin/sh causes various subtle build problems, please use bash instead.

то нужно выполнить следующую команду, выбрав ответ «NO»:

sudo dpkg-reconfigure dash

Результаты компиляции

По окончании работы утилиты bitbake вы должны увидеть следующую надпись:

NOTE: Tasks Summary: Attempted 2928 tasks of which 0 didn't need to be rerun and 0 failed.

Это означает, что в директории ${OETREE}/angstrom-dev/deploy/glibc/images/beagleboard находятся:

Из этих файлов нам подойдут только файловые системы с консольным интерфейсом (Angstrom-console-image..) и графическим интерфейсом (Angstrom-x11-image..). u-boot, ядро и модули для него нам не подходят, т.к. они обеспечат только функционал Beagleboard, для которого не предусмотрена поддержка сетевого контроллера LAN9221 (однако этот контроллер поддерживается в OpenEmbedded для модуля OVERO).

Далее скомпилируем ядро Linux для BlueShark.

Компиляция ядра 2.6.29

С этим ядром также работает файловая система Beagleboard-demo, где присутствуют Internet браузер и другое интересное ПО.

Поддержка функций на платформе Atoll:

  • Ethernet
  • MMC1

Обратите внимание, что все предыдущие действия приводят к компиляции кросс-компилятора GCC с патчами от OpenEmbedded. Применение именно собранного компилятора гарантирует 100% совместимость с файловой системой от OpenEmbedded и дает возможность использовать файловую систему от Koen или Narcissus.

Откройте файл $OETREE/build/conf/local.conf:

# Where to store sources
DL_DIR = "${HOME}/OE/downloads"

INHERIT += " rm_work "

# Make sure you have these installed
ASSUME_PROVIDED += "gdk-pixbuf-csource-native imagemagick-native librsvg-native"
.....

и выключите строку:

#INHERIT += " rm_work "

Ключ rm_work удаляет все промежуточные файлы при компиляции: исходные тексты, объекты и пр. Нам потребуются исходники ядра плюс весь необходимый набор патчей от OpenEmbedded. Можно, конечно, подготовить всё вручную, но проще и с наименьшими ошибками выполнить так.

Таким образом мы выключили удаление исходников при компиляции. Теперь пересоберем ядро для Beagleboard и, наконец, получим необходимое окружение для дальнейшей работы с ядром:

bitbake virtual/kernel -c clean; bitbake virtual/kernel

Теперь в директории «$OETREE/angstrom-dev/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.29-r46/git» находятся исходные тексты ядра 2.6.29 с уже примененными патчами для Beagleboard.

Добавим к ядру патчи для модуля BlueShark и отладочных плат Atoll. Для этого зайдите в директорию «$OETREE/angstrom-dev/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.29-r46/git», скачайте набор патчей http://mentorel.com/downloads/blueshark/blueshark-2.6.29.patches.tgz и распакуйте архив прямо в корень исходников ядра:

cd $OETREE/angstrom-dev/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.29-r46/git
wget http://mentorel.com/downloads/blueshark/blueshark-2.6.29.patches.tgz
tar xzf blueshark-2.6.29.patches.tgz

Теперь можно применить исправления для BlueShark:

quilt push -a

Скачаем файл конфигурации ядра:

wget http://mentorel.com/downloads/blueshark/defconfig-2.6.29
cp defconfig-2.6.29 .config

Чтобы настроить конфигурацию ядра используют команду:

make ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- menuconfig

Компиляция ядра (обратите внимание на опцию -j2, в ней вы задаете кол-во ядер процессора на вашем компьютере):

make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- uImage

Компиляция модулей:

make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules

Установите модули в файловую систему на SD-карточке:

sudo make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules_install INSTALL_MOD_PATH=/media/rootfs

В результате получаем бинарник, который необходимо записать на SD-карту (партицию FAT32) и можно загружать платформы, основанные на модуле BlueShark.

Angstrom Linux unstable

За основу взяты инструкции отсюда: http://wiki.openembedded.org/index.php/Getting_Started

Далее описаны действия, верные для всех версий ядра нестабильной ветки:

Создание окружения

Войдите в домашнюю директорию пользователя:

# cd

Выполните следующие команды, которые скачивают хранилище файлов OpenEmbedded:

export OETREE="${HOME}/OE"
mkdir -p ${OETREE} && cd ${OETREE}
git clone git://git.openembedded.org/openembedded

Обновите локальную копию хранилища OE:

cd ${OETREE}/openembedded
git pull

Установка bitbake

Лучше использовать локальную версию утилиты bitbake, чем устанавливать её в Linux.

cd ${OETREE}
wget http://download.berlios.de/bitbake/bitbake-1.8.18.tar.gz
tar xzf bitbake-1.8.18.tar.gz -C bitbake

Создание конфигурации

cd ${OETREE}
cp openembedded/conf/local.conf.sample build/conf/local.conf

Теперь необходимо исправить файл «build/conf/local.conf», добавив в него следющие строки:

BBFILES = "${HOME}/OE.dev/openembedded/recipes/*/*.bb"
DISTRO = "angstrom-2008.1"
MACHINE = "beagleboard"

Также, если у вашего ПК многоядерный процессор, то можно ускорить компиляцию, установив следующие параметры:

PARALLEL_MAKE = "-j 4"
BB_NUMBER_THREADS = "2"

Описания этих параметров вы найдете в файле «build/conf/local.conf».

Внимание! Чтобы сократить количество расходуемого места на диске добавьте опцию:

INHERIT += "rm_work"

Также можете указать, где у вас находится хранилище пакетов или куда именно они будут скачены:

DL_DIR = "${HOME}/OE/downloads"

Сохраните файл «build/conf/local.conf».

Установка окружения

export BBPATH=$OETREE/build:$OETREE/openembedded
export PATH=$OETREE/bitbake/bin:$PATH

Компиляция файловой системы

Вы можете не тратить несколько часов и взять готовую файловую систему отсюда
http://www.angstrom-distribution.org/demo/beagleboard/Angstrom-Beagleboard-demo-image-glibc-ipk-2010.3-beagleboard.rootfs.tar.bz2 или http://mentorel.com/downloads/blueshark/ и сразу же перейти к компиляции ядра. Обратите внимание, что файловую систему Beagleboard-demo собрать самому практически нереально, т.к. требуется разрешить зависимости для очень многих пакетов. При этом используется ПО от Texas Instruments, поставляемое по соглашению. Использовать сборки от Beagleboard-сообщества намного проще и быстрее.

Зайдите в папку build и наберите команды:

  • Компиляцию образа для работы через консоль
bitbake console-image 
  • Компиляция образа с поддержкой графического интерфейса наберите команду:
bitbake x11-image

Внимание, компиляция обычно занимает несколько часов и не всегда завершается успешно, т.к. это нестабильная ветка.

Ядро 2.6.32 unstable

Компиляция без среды OE

Ядро Linux 2.6.32-r78 можно скомпилировать без громоздкой системы OpenEmbedded. Для этого выполняют следующие шаги:

1) Скачивают исходники ядра 2.6.32-r78
http://mentorel.com/downloads/blueshark/git_arago-project.org.git.people.sriram.ti-psp-omap.git_a6bad4464f985fdd3bed72e1b82dcbfc004d7869.tar.gz

wget http://mentorel.com/downloads/blueshark/git_arago-project.org.git.people.sriram.ti-psp-omap.git_a6bad4464f985fdd3bed72e1b82dcbfc004d7869.tar.gz

2) Скачивают набор исправлений для платформы BlueShark+Atoll-Deluxe
http://mentorel.com/downloads/blueshark/blueshark-2.6.32-r78.patches.tgz

wget http://mentorel.com/downloads/blueshark/blueshark-2.6.32-r78.patches.tgz

3) Скачивают defconfig для ядра
http://mentorel.com/downloads/blueshark/defconfig-2.6.32-r78

wget http://mentorel.com/downloads/blueshark/defconfig-2.6.32-r78

4) Теперь необходимо распаковать все исходники:

tar xzf git_arago-project.org.git.people.sriram.ti-psp-omap.git_a6bad4464f985fdd3bed72e1b82dcbfc004d7869.tar.gz
cd git
tar xzf ../blueshark-2.6.32-r78.patches.tgz

5) Накладываем исправления для BlueShark:

quilt push -a

6) Настраиваем конфигурацию ядра:

cp ../defconfig-2.6.32-r78 .config
make ARCH=arm menuconfig

7) Собственно сама компиляция

make -j2 ARCH=arm CROSS_COMPILE=~/OE.dev/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- uImage

8) Модули можно скомпилировать с помощью команды

make -j2 ARCH=arm CROSS_COMPILE=~/OE.dev/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules

Либо использовать готовые, т.к. модули одинаковы для всех платформ одной архитектуры:
http://mentorel.com/downloads/blueshark/demo/modules-2.6.32-r78.tgz

wget http://mentorel.com/downloads/blueshark/demo/modules-2.6.32-r78.tgz

Компиляция в среде OE

Поддержка функций на платформе Atoll.
Есть поддержка всех функций, включая:

  • Ethernet
  • MMC1
  • MMC2

Откройте файл $OETREE/build/conf/local.conf и выключите строку:

#INHERIT += " rm_work "

Ключ rm_work удаляет все промежуточные файлы при компиляции: исходные тексты, объекты и пр. Нам потребуются исходники ядра плюс весь необходимый набор патчей от OpenEmbedded. Можно, конечно, подготовить всё вручную, но проще и с наименьшими ошибками выполнить так.

Теперь пересоберем ядро для Beagleboard и, наконец, получим необходимое окружение для дальнейшей работы с ядром:

bitbake virtual/kernel -c clean; bitbake virtual/kernel

Теперь в директории «$OETREE/build/tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r78+gitra6bad4464f985fdd3bed72e1b82dcbfc004d7869/git» находятся исходные тексты ядра 2.6.32 с уже примененными патчами для Beagleboard.

Добавим к ядру патчи для модуля BlueShark и отладочных плат Atoll. Для этого зайдите в директорию «$OETREE/build/tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r78+gitra6bad4464f985fdd3bed72e1b82dcbfc004d7869/git», скачайте набор патчей http://mentorel.com/downloads/blueshark/blueshark-2.6.32-r78.patches.tgz и распакуйте архив прямо в корень исходников ядра:

cd $OETREE/build/tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r78+gitra6bad4464f985fdd3bed72e1b82dcbfc004d7869/git
wget http://mentorel.com/downloads/blueshark/blueshark-2.6.32-r78.patches.tgz
tar xzf blueshark-2.6.32-r78.patches.tgz

Теперь можно применить исправления для BlueShark:

quilt push -a

Скачаем файл конфигурации ядра:

wget http://mentorel.com/downloads/blueshark/defconfig-2.6.32-r78
cp defconfig-2.6.32-r78 .config

Чтобы настроить конфигурацию ядра используют команду:

make ARCH=arm CROSS_COMPILE=$OETREE/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- menuconfig

Компиляция ядра (обратите внимание на опцию -j2, в ней вы задаете кол-во ядер процессора на вашем компьютере):

make -j2 ARCH=arm CROSS_COMPILE=$OETREE/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- uImage

Компиляция модулей:

make -j2 ARCH=arm CROSS_COMPILE=$OETREE/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules

Установите модули в файловую систему на SD-карточке:

sudo make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules_install INSTALL_MOD_PATH=/media/rootfs

В результате получаем бинарник, который необходимо записать на SD-карту (партицию FAT32) и можно загружать платформы, основанные на модуле BlueShark.

wiki/angstrom_blueshark.txt · Последние изменения: 2012/11/20 19:14 (внешнее изменение)