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

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


wiki:me-ms1000
no way to compare when less than two revisions

Различия

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


wiki:me-ms1000 [2012/11/20 19:14] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Инструкция по сборке Angstrom Linux для ME-MS1000 на Linux машине ======
  
 +За основу взяты инструкции с [[http://www.linux4sam.org/twiki/bin/view/Linux4SAM/OpenEmbeddedAngstrom|Linux4SAM]]
 +
 +Процедура сборки Angstrom Linux проверена на машинах:
 +
 +  * Gentoo от 2008-02
 +  * Fedora Core 7
 +
 +=== Утилиты необходимые для сборки ===
 +
 +* 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
 +
 +Для более подробных сведений, касательно вашего дистрибутива Linux, на котором выполняется сборка, обратитесь к [[http://wiki.openembedded.net/index.php/OEandYourDistro|странице]].
 +
 +===== Установка необходимых утилит в Fedora Core 7 =====
 +
 +<code>su -c "yum install python m4 make wget curl ftp cvs subversion \
 +tar bzip2 gzip unzip python-psyco ccache perl texinfo texi2html diffstat \
 +openjade docbook-style-dsssl docbook-style-xsl docbook-dtds docbook-utils \
 +sed bison bc glibc-devel gcc binutils pcre pcre-devel git quilt groff \
 +linuxdoc-tools patch linuxdoc-tools gcc gcc-c++ help2man perl-ExtUtils-MakeMaker"</code>
 +
 +===== Установка необходимых утилит в 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</code>
 +
 +
 +===== Файлы необходимые для сборки =====
 +
 + * создайте директорию скажем $HOME/oe и (cd $HOME/oe), путь до этой директории в дальнейшем будем обозначать $OE
 +
 + * скачайте любой срез базы репозитория OpenEmbedded [[http://wiki.openembedded.net/snapshots/OE.mtn.bz2]]
 +
 + * создайте директорию $OE/stuff и перейдите в нее
 +
 + * распакуйте срез базы OE.mtn.bz2
 +
 +<code>bunzip2 OE.mtn.bz2</code>
 +
 + * выполните команду:
 +
 +<code>mtn --db=OE.mtn db migrate</code>
 +
 + * далее выполните команду
 +
 +<code>mtn --db=OE.mtn checkout -r aa44d626baaae40ee498aea453176a8aea90d9fc --branch=org.openembedded.dev</code>
 +
 +для получния нужной ревизии OpenEmbedded
 +
 + * Скачайте и примените патч для me-ms1000 [[http://www.mentorel.com/downloads/sbc-9263/oe_angstrom_at91-me-ms1000xxx.diff.gz]]
 +
 +<code>
 +cd $OE/stuff/org.openembedded.dev
 +zcat ../oe_angstrom_at91-me-ms1000xxx.diff.gz | patch -p0
 +cd ..
 +</code>
 +
 +===== Переменные окружения =====
 +
 +**Для Gentoo**: проверьте установленна ли переменная окружения **LINGUAS**, если 
 +сборка завершиться с ошибкой не могу скопировать, найти и т.п., файл c расширением
 +"mo", попробуйте собирать с 
 +
 +<code>unset LINGUAS</code>
 +
 +перед этим удалив из stamps маркеры относящиеся к несобравщемуся пакету.
 +
 +Распакуйте bitbake в директорию $OE/stuff, затем создайте символьную ссылку на директорию с bitbake:
 +<code>ln -s bitbake-1.8.6 bitbake</code>
 +
 +Создайте скрипт env-oe.sh со следующим содержанием
 +<code>
 +#!/bin/sh
 +
 +OE_DIR=/stuff
 +
 +export PATH=${OE_DIR}/bitbake/bin:$PATH
 +export BBPATH=${OE_DIR}/build:${OE_DIR}/org.openembedded.dev
 +</code>
 +
 +Запустите скрипт, чтобы считать переменные окружения:
 +<code>source ./env-oe.sh</code>
 +
 +===== Сборка =====
 +
 +Отредактируйте $OE/org.openembedded.dev/conf/local.conf следующим образом:
 +
 +1) поправьте переменные:
 +BBFILES - где искать bb файлы, обычно это $OE/org.openembedded.dev/packages/*/*.bb
 +DL_DIR - куда скачивать архивы с исходниками (не обязательно)
 +
 +2) На многопроцессорных системах можно ускорить сборки образов, включив параллельную сборку:
 +<code>
 +PARALLEL_MAKE = "-j4"
 +BB_NUMBER_THREADS = "8"
 +</code>
 +//Эти параметры нужно настроить под конкретную производительность, иначе ОС перестанет реагировать на ваши действия.//
 +
 +Попробуйте сначала собрать минимальное количество пакетов:
 +
 +<code>bitbake angstrom-minimal-image</code>
 +
 +Если все собралось удачно запустите сборку образа linux с графическим
 +интерфейсом:
 +
 +<code>bitbake angstrom-x11-image-demo</code>
 +
 +===== Возможные ошибки при сборке =====
 +  * binutils не собираются
 +Ошибка: missing makeinfo
 +
 +Решение: установите texinfo версии выше 4.4
 +
 +  * coreutils не собираются
 +Ошибка: в логе ошибок упоминается что futimens уже объявлена, и имеет другую сигнатуру
 +
 +Решение: патч
 +<code>
 +Index: coreutils-5.3.0/lib/utimens.c
 +===================================================================
 +--- coreutils-5.3.0.orig/lib/utimens.c
 ++++ coreutils-5.3.0/lib/utimens.c
 +@@ -55,7 +55,7 @@ struct utimbuf
 +    If TIMESPEC is null, set the time stamps to the current time.  */
 + 
 + int
 +-futimens (int fd ATTRIBUTE_UNUSED,
 ++my_futimens (int fd ATTRIBUTE_UNUSED,
 +    char const *file, struct timespec const timespec[2])
 + {
 +   /* There's currently no interface to set file timestamps with
 +@@ -117,5 +117,5 @@ futimens (int fd ATTRIBUTE_UNUSED,
 + int
 + utimens (char const *file, struct timespec const timespec[2])
 + {
 +-  return futimens (-1, file, timespec);
 ++  return my_futimens (-1, file, timespec);
 + }
 +Index: coreutils-5.3.0/lib/utimens.h
 +===================================================================
 +--- coreutils-5.3.0.orig/lib/utimens.h
 ++++ coreutils-5.3.0/lib/utimens.h
 +@@ -1,3 +1,3 @@
 + #include "timespec.h"
 +-int futimens (int, char const *, struct timespec const [2]);
 ++int my_futimens (int, char const *, struct timespec const [2]);
 + int utimens (char const *, struct timespec const [2]);
 +Index: coreutils-5.3.0/src/touch.c
 +===================================================================
 +--- coreutils-5.3.0.orig/src/touch.c
 ++++ coreutils-5.3.0/src/touch.c
 +@@ -191,7 +191,7 @@ touch (const char *file)
 +       t = timespec;
 +     }
 + 
 +-  ok = (futimens (fd, file, t) == 0);
 ++  ok = (my_futimens (fd, file, t) == 0);
 +   if (fd != -1)
 +     ok &= (close (fd) == 0);
 + 
 +</code>
 +
 +  * ncurses-5.4 не собирается (воспроизводится на **Fedora Core 7**)
 +Ошибка: 
 +
 +tic: symbol lookup error: tic: undefined symbol: _nc_check_termtype
 +
 +Решение:
 +
 +Необходимо правильно установить значение переменной окружения LD_LIBRARY_PATH, чтобы включить библиотеки libncurses*.so.* для i686. Сами библиотеки находятся тут:
 +
 +$OE/stuff/tmp/staging/i686-linux/lib
 +
 +Для этого правим файл run_tic.sh в директории $OE/stuff/tmp/work/armv5te-angstrom-linux-gnueabi/ncurses-5.4-r8/ncurses-5.4/misc/
 +
 +находим строки и добавляем "export LD_LIBRARY_PATH=..." как написано:
 +<code>
 +export PATH
 +SHLIB="sh $srcdir/shlib"
 +else
 +# Cross-compiling, so don't set PATH or run shlib.
 +SHLIB=
 +fi
 +export LD_LIBRARY_PATH=/stuff/tmp/staging/i686-linux/lib
 +#
 +</code>
 +
 +  * rxvt-unicode-7.9 не собирается (воспроизводится на **Fedora Core 7**)
 +Ошибка: 
 +tic: symbol lookup error: tic: undefined symbol: _nc_check_termtype
 +
 +Решение:
 +Необходимо исправить файл:
 +
 +$OE/stuff/tmp/work/armv5te-angstrom-linux-gnueabi/rxvt-unicode-7.9-r0/rxvt-unicode-7.9/doc/Makefile
 +
 +Для этого в блоке **install** надо исправить последнюю строку, указав путь к библиотекам libncurses*.so.* для i686. Сами библиотеки находятся тут:
 +
 +$OE/stuff/tmp/staging/i686-linux/lib
 +
 +В Makefile заменяем строку #107:
 +<code>if test -x "/stuff/tmp/staging/i686-linux/bin/tic"; then if test -n "/stuff/tmp/staging/i686-linux/bin/tic"; then /stuff/tmp/staging/i686-linux/bin/tic etc/rxvt-unicode.terminfo; fi; fi</code>
 +на:
 +<code>if test -x "/stuff/tmp/staging/i686-linux/bin/tic"; then if test -n "/stuff/tmp/staging/i686-linux/bin/tic"; then export LD_LIBRARY_PATH=/stuff/tmp/staging/i686-linux/lib ; /stuff/tmp/staging/i686-linux/bin/tic etc/rxvt-unicode.terminfo; fi; fi</code>
wiki/me-ms1000.txt · Последнее изменение: 2012/11/20 19:14 — 127.0.0.1