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

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


wiki:me-ms1000

Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

wiki:me-ms1000 [2012/11/20 19:14] (текущий)
Строка 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 (внешнее изменение)