Содержание
Компиляция 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 находятся:
Имя | Размер |
---|---|
u-boot.bin | 193k |
uImage-2.6.29-r46-beagleboard.bin | 2.9M |
console-image-beagleboard.tar.bz2 | 9.2M |
x11-image-beagleboard.tar.bz2 | 21.1M |
modules-2.6.29-r46-beagleboard.tgz | 7.1M |
Beagleboard-demo | 131M |
Из этих файлов нам подойдут только файловые системы с консольным интерфейсом (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.
Скомпилированный uImage |
---|
http://mentorel.ru/downloads/blueshark/demo/uImage-2.6.29-r46-beagleboard.bin |
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.