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

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


wiki:angstrom_blueshark
no way to compare when less than two revisions

Различия

Показаны различия между двумя версиями страницы.


wiki:angstrom_blueshark [2012/11/20 19:14] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Компиляция 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 ([[http://prdownload.berlios.de/bitbake/bitbake-1.8.6.tar.gz|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 =====
 +
 +<code>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</code>
 +====== Angstrom Linux stable ======
 +За основу взяты инструкции отсюда: [[http://www.angstrom-distribution.org/building-angstrom]]
 +
 +===== Ядро 2.6.29 stable =====
 +В настоящее время в **стабильной** ветке компилируется именно ядро 2.6.29.
 +
 +==== Создание окружения ====
 +
 +Данные инструкции предполагают компиляцию Angstrom Linux в домашней директории пользователя, поэтому убедитесь, что ней достаточно места (не менее 6-15ГБ).
 +
 +Войдите в домашнюю директорию пользователя:
 +<code>
 +# cd
 +</code>
 +
 +Выполните следующие команды, которые скачивают хранилище файлов OpenEmbedded:
 +
 +<code>
 +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
 +</code>
 +
 +Обновите локальную копию хранилища OE:
 +<code>
 +cd ${OETREE}/openembedded
 +git pull
 +</code>
 +
 +==== Создание конфигурации ====
 +
 +Сначала необходимо установить переменные окружения, для этого скачайте [[http://www.angstrom-distribution.org/files/source-me.txt|скрипт]] в директорию ${OETREE}.
 +
 +Чтобы создать конфигурацию OE именно для Beagleboard (BlueShark) выполните следующие действия:
 +
 +1) Создайте директорию для файла конфигурации local.conf для платформы
 +<code>
 +mkdir -p ${OETREE}/build/conf 
 +</code>
 +
 +2) Скопируйте пример конфигурации:
 +<code>
 +cp ${OETREE}/openembedded/contrib/angstrom/local.conf ${OETREE}/build/conf/
 +</code>
 +
 +3) Добавьте в конец файла строку:
 +<code>
 +MACHINE="beagleboard"
 +</code>
 +
 +==== Компиляция файловой системы ====
 +
 +Вы можете не тратить несколько часов и взять готовую файловую систему отсюда [[http://mentorel.com/downloads/blueshark/]] и сразу же перейти к компиляции ядра.
 +
 +Обратите внимание, что файловая система с меткой **stable** относится к стабильной, т.е. получена по инструкциям, использованным в этом разделе.
 +
 +  * Добавьте в конец файла "/etc/sysctl.conf" строку и перезагрузите Ubuntu:
 +<code>
 +vm.mmap_min_addr = 0
 +</code>
 +  * Установите переменные окружения:
 +<code>
 +cd ${OETREE}
 +source source-me.txt 
 +</code>
 +
 +  * Зайдите в директорию OE:
 +<code>
 +cd ${OETREE}/openembedded 
 +</code>
 +
 +  * Убедитесь, что репозиторий OpenEmbedded имеет последние обновления
 +<code>
 +git pull --rebase
 +</code>
 +
 +  * Зайдите в директорию ${OETREE}/build, где будут хранится файлы:
 +<code>
 +cd ${OETREE}/build
 +</code>
 +
 +  * Начинайте компиляцию образа для работы через консоль
 +<code>
 +bitbake console-image 
 +</code>
 +
 +Чтобы собрать образ с поддержкой графического интерфейса наберите команду:
 +<code>
 +bitbake x11-image
 +</code>
 +
 +**Если появилось следующее сообщение об ошибке:**
 +<code>
 +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.
 +</code>
 +то нужно выполнить следующую команду, выбрав ответ "NO":
 +<code>
 +sudo dpkg-reconfigure dash
 +</code>
 +
 +==== Результаты компиляции ====
 +
 +По окончании работы утилиты bitbake вы должны увидеть следующую надпись:
 +<code>
 +NOTE: Tasks Summary: Attempted 2928 tasks of which 0 didn't need to be rerun and 0 failed.
 +</code>
 +Это означает, что в директории ${OETREE}/angstrom-dev/deploy/glibc/images/beagleboard находятся:\\
 +
 +^ Имя ^ Размер ^
 +|[[http://mentorel.ru/downloads/blueshark/u-boot.bin|u-boot.bin]] | 193k |
 +|[[http://mentorel.ru/downloads/blueshark/uImage-2.6.29-r46-beagleboard.bin|uImage-2.6.29-r46-beagleboard.bin]] | 2.9M |
 +|[[http://mentorel.ru/downloads/blueshark/Angstrom-console-image-glibc-ipk-2009.X-stable-beagleboard.rootfs.tar.bz2|console-image-beagleboard.tar.bz2]] | 9.2M |
 +|[[http://mentorel.ru/downloads/blueshark/Angstrom-x11-image-glibc-ipk-2009.X-stable-beagleboard.rootfs.tar.bz2|x11-image-beagleboard.tar.bz2]] | 21.1M |
 +|[[http://mentorel.ru/downloads/blueshark/modules-2.6.29-r46-beagleboard.tgz|modules-2.6.29-r46-beagleboard.tgz]] | 7.1M |
 +|[[http://mentorel.ru/downloads/blueshark/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-stable-20090612--beagleboard.rootfs.tar.bz2|Beagleboard-demo]]| 131M |
 +
 +Из этих файлов нам подойдут только файловые системы с консольным интерфейсом (Angstrom-console-image..) и графическим интерфейсом (Angstrom-x11-image..). u-boot, ядро и модули для него нам не подходят, т.к. они обеспечат только функционал Beagleboard, для которого не предусмотрена поддержка сетевого контроллера LAN9221 (однако этот контроллер поддерживается в OpenEmbedded для модуля OVERO).
 +
 +Далее скомпилируем ядро Linux для BlueShark.
 +===== Компиляция ядра 2.6.29 =====
 +//С этим ядром также работает файловая система [[http://mentorel.ru/downloads/blueshark/Angstrom-Beagleboard-demo-image-glibc-ipk-2009.X-stable-20090612--beagleboard.rootfs.tar.bz2|Beagleboard-demo]], где присутствуют Internet браузер и другое интересное ПО.//
 +
 +Поддержка функций на платформе Atoll:
 +
 +  * Ethernet
 +  * MMC1
 +
 +//Обратите внимание, что все предыдущие действия приводят к компиляции кросс-компилятора GCC с патчами от OpenEmbedded. Применение именно собранного компилятора гарантирует 100% совместимость с файловой системой от OpenEmbedded и дает возможность использовать файловую систему от [[http://www.angstrom-distribution.org/demo/beagleboard/|Koen]] или [[http://www.angstrom-distribution.org/narcissus/|Narcissus]].//
 +
 +Откройте файл $OETREE/build/conf/local.conf:
 +<code>
 +# 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"
 +.....
 +</code>
 +и выключите строку:
 +<code>
 +#INHERIT += " rm_work "
 +</code>
 +Ключ **rm_work** удаляет все промежуточные файлы при компиляции: исходные тексты, объекты и пр. Нам потребуются исходники ядра плюс весь необходимый набор патчей от OpenEmbedded. Можно, конечно, подготовить всё вручную, но проще и с наименьшими ошибками выполнить так.
 +
 +Таким образом мы выключили удаление исходников при компиляции. Теперь пересоберем ядро для Beagleboard и, наконец, получим необходимое окружение для дальнейшей работы с ядром:
 +
 +<code>
 +bitbake virtual/kernel -c clean; bitbake virtual/kernel
 +</code>
 +Теперь в директории "$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]] и распакуйте архив прямо в корень исходников ядра:
 +<code>
 +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
 +</code>
 +Теперь можно применить исправления для BlueShark:
 +<code>
 +quilt push -a
 +</code>
 +Скачаем файл конфигурации ядра:
 +<code>
 +wget http://mentorel.com/downloads/blueshark/defconfig-2.6.29
 +cp defconfig-2.6.29 .config
 +</code>
 +Чтобы настроить конфигурацию ядра используют команду:
 +<code>
 +make ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- menuconfig
 +</code>
 +Компиляция ядра (обратите внимание на опцию -j2, в ней вы задаете кол-во ядер процессора на вашем компьютере):
 +<code>
 +make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- uImage
 +</code>
 +Компиляция модулей:
 +<code>
 +make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules
 +</code>
 +Установите модули в файловую систему на SD-карточке:
 +<code>
 +sudo make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules_install INSTALL_MOD_PATH=/media/rootfs
 +</code>
 +
 +В результате получаем бинарник, который необходимо записать на 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]]
 +
 +Далее описаны действия, верные для всех версий ядра нестабильной ветки:
 +
 +==== Создание окружения ====
 +
 +Войдите в домашнюю директорию пользователя:
 +<code>
 +# cd
 +</code>
 +
 +Выполните следующие команды, которые скачивают хранилище файлов OpenEmbedded:
 +
 +<code>
 +export OETREE="${HOME}/OE"
 +mkdir -p ${OETREE} && cd ${OETREE}
 +git clone git://git.openembedded.org/openembedded
 +</code>
 +
 +Обновите локальную копию хранилища OE:
 +<code>
 +cd ${OETREE}/openembedded
 +git pull
 +</code>
 +
 +==== Установка bitbake ====
 +Лучше использовать локальную версию утилиты **bitbake**, чем устанавливать её в Linux.
 +<code>
 +cd ${OETREE}
 +wget http://download.berlios.de/bitbake/bitbake-1.8.18.tar.gz
 +tar xzf bitbake-1.8.18.tar.gz -C bitbake
 +</code>
 +
 +==== Создание конфигурации ====
 +<code>
 +cd ${OETREE}
 +cp openembedded/conf/local.conf.sample build/conf/local.conf
 +</code>
 +
 +Теперь необходимо исправить файл "build/conf/local.conf", добавив в него следющие строки:
 +<code>
 +BBFILES = "${HOME}/OE.dev/openembedded/recipes/*/*.bb"
 +DISTRO = "angstrom-2008.1"
 +MACHINE = "beagleboard"
 +</code>
 +
 +Также, если у вашего ПК многоядерный процессор, то можно ускорить компиляцию, установив следующие параметры:
 +<code>
 +PARALLEL_MAKE = "-j 4"
 +BB_NUMBER_THREADS = "2"
 +</code>
 +Описания этих параметров вы найдете в файле "build/conf/local.conf".
 +
 +//Внимание! Чтобы сократить количество расходуемого места на диске добавьте опцию://
 +<code>
 +INHERIT += "rm_work"
 +</code>
 +
 +Также можете указать, где у вас находится хранилище пакетов или куда именно они будут скачены:
 +<code>
 +DL_DIR = "${HOME}/OE/downloads"
 +</code>
 +Сохраните файл "build/conf/local.conf".
 +
 +==== Установка окружения ====
 +<code>
 +export BBPATH=$OETREE/build:$OETREE/openembedded
 +export PATH=$OETREE/bitbake/bin:$PATH
 +</code>
 +
 +==== Компиляция файловой системы ====
 +
 +Вы можете не тратить несколько часов и взять готовую файловую систему отсюда\\
 +[[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** и наберите команды:
 +
 +  * Компиляцию образа для работы через консоль
 +<code>
 +bitbake console-image 
 +</code>
 +
 +  * Компиляция образа с поддержкой графического интерфейса наберите команду:
 +<code>
 +bitbake x11-image
 +</code>
 +
 +//Внимание, компиляция обычно занимает несколько часов и не всегда завершается успешно, т.к. это **нестабильная** ветка.//
 +===== Ядро 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]]
 +<code>
 +wget http://mentorel.com/downloads/blueshark/git_arago-project.org.git.people.sriram.ti-psp-omap.git_a6bad4464f985fdd3bed72e1b82dcbfc004d7869.tar.gz
 +</code>
 +
 +2) Скачивают набор исправлений для платформы BlueShark+Atoll-Deluxe\\
 +[[http://mentorel.com/downloads/blueshark/blueshark-2.6.32-r78.patches.tgz]]
 +<code>
 +wget http://mentorel.com/downloads/blueshark/blueshark-2.6.32-r78.patches.tgz
 +</code>
 +
 +3) Скачивают defconfig для ядра\\
 +[[http://mentorel.com/downloads/blueshark/defconfig-2.6.32-r78]]
 +<code>
 +wget http://mentorel.com/downloads/blueshark/defconfig-2.6.32-r78
 +</code>
 +
 +4) Теперь необходимо распаковать все исходники:
 +<code>
 +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
 +</code>
 +
 +5) Накладываем исправления для BlueShark:
 +<code>
 +quilt push -a
 +</code>
 +
 +6) Настраиваем конфигурацию ядра:
 +<code>
 +cp ../defconfig-2.6.32-r78 .config
 +make ARCH=arm menuconfig
 +</code>
 +
 +7) Собственно сама компиляция
 +<code>
 +make -j2 ARCH=arm CROSS_COMPILE=~/OE.dev/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- uImage
 +</code>
 +
 +8) Модули можно скомпилировать с помощью команды
 +<code>
 +make -j2 ARCH=arm CROSS_COMPILE=~/OE.dev/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules
 +</code>
 +Либо использовать готовые, т.к. модули одинаковы для всех платформ одной архитектуры:\\
 +[[http://mentorel.com/downloads/blueshark/demo/modules-2.6.32-r78.tgz]]
 +<code>
 +wget http://mentorel.com/downloads/blueshark/demo/modules-2.6.32-r78.tgz
 +</code>
 +==== Компиляция в среде OE ====
 +
 +Поддержка функций на платформе Atoll.\\
 +Есть поддержка всех функций, включая:
 +  * Ethernet
 +  * MMC1
 +  * MMC2
 +
 +Откройте файл $OETREE/build/conf/local.conf и выключите строку:
 +<code>
 +#INHERIT += " rm_work "
 +</code>
 +Ключ **rm_work** удаляет все промежуточные файлы при компиляции: исходные тексты, объекты и пр. Нам потребуются исходники ядра плюс весь необходимый набор патчей от OpenEmbedded. Можно, конечно, подготовить всё вручную, но проще и с наименьшими ошибками выполнить так.
 +
 +Теперь пересоберем ядро для Beagleboard и, наконец, получим необходимое окружение для дальнейшей работы с ядром:
 +
 +<code>
 +bitbake virtual/kernel -c clean; bitbake virtual/kernel
 +</code>
 +Теперь в директории "$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]] и распакуйте архив прямо в корень исходников ядра:
 +<code>
 +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
 +</code>
 +Теперь можно применить исправления для BlueShark:
 +<code>
 +quilt push -a
 +</code>
 +Скачаем файл конфигурации ядра:
 +<code>
 +wget http://mentorel.com/downloads/blueshark/defconfig-2.6.32-r78
 +cp defconfig-2.6.32-r78 .config
 +</code>
 +Чтобы настроить конфигурацию ядра используют команду:
 +<code>
 +make ARCH=arm CROSS_COMPILE=$OETREE/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- menuconfig
 +</code>
 +Компиляция ядра (обратите внимание на опцию -j2, в ней вы задаете кол-во ядер процессора на вашем компьютере):
 +<code>
 +make -j2 ARCH=arm CROSS_COMPILE=$OETREE/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- uImage
 +</code>
 +Компиляция модулей:
 +<code>
 +make -j2 ARCH=arm CROSS_COMPILE=$OETREE/build/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules
 +</code>
 +Установите модули в файловую систему на SD-карточке:
 +<code>
 +sudo make -j2 ARCH=arm CROSS_COMPILE=$OETREE/angstrom-dev/cross/armv7a/bin/arm-angstrom-linux-gnueabi- modules_install INSTALL_MOD_PATH=/media/rootfs
 +</code>
 +
 +В результате получаем бинарник, который необходимо записать на SD-карту (партицию FAT32) и можно загружать платформы, основанные на модуле BlueShark.
 +^Скомпилированный uImage|
 +| [[http://mentorel.ru/downloads/blueshark/demo/uImage-2.6.32-r78+gitra6bad4464f985fdd3bed72e1b82dcbfc004d7869-beagleboard.bin]] |
 +
  
wiki/angstrom_blueshark.txt · Последнее изменение: 2012/11/20 19:14 — 127.0.0.1