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

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


wiki:me-ms1000

Инструкция по сборке Angstrom Linux для ME-MS1000 на Linux машине

За основу взяты инструкции с 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 (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, на котором выполняется сборка, обратитесь к странице.

Установка необходимых утилит в Fedora Core 7

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"

Установка необходимых утилит в 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

Файлы необходимые для сборки

* создайте директорию скажем $HOME/oe и (cd $HOME/oe), путь до этой директории в дальнейшем будем обозначать $OE

* скачайте любой срез базы репозитория OpenEmbedded http://wiki.openembedded.net/snapshots/OE.mtn.bz2

* создайте директорию $OE/stuff и перейдите в нее

* распакуйте срез базы OE.mtn.bz2

bunzip2 OE.mtn.bz2

* выполните команду:

mtn --db=OE.mtn db migrate

* далее выполните команду

mtn --db=OE.mtn checkout -r aa44d626baaae40ee498aea453176a8aea90d9fc --branch=org.openembedded.dev

для получния нужной ревизии OpenEmbedded

* Скачайте и примените патч для me-ms1000 http://www.mentorel.com/downloads/sbc-9263/oe_angstrom_at91-me-ms1000xxx.diff.gz

cd $OE/stuff/org.openembedded.dev
zcat ../oe_angstrom_at91-me-ms1000xxx.diff.gz | patch -p0
cd ..

Переменные окружения

Для Gentoo: проверьте установленна ли переменная окружения LINGUAS, если сборка завершиться с ошибкой не могу скопировать, найти и т.п., файл c расширением «mo», попробуйте собирать с

unset LINGUAS

перед этим удалив из stamps маркеры относящиеся к несобравщемуся пакету.

Распакуйте bitbake в директорию $OE/stuff, затем создайте символьную ссылку на директорию с bitbake:

ln -s bitbake-1.8.6 bitbake

Создайте скрипт env-oe.sh со следующим содержанием

#!/bin/sh

OE_DIR=/stuff

export PATH=${OE_DIR}/bitbake/bin:$PATH
export BBPATH=${OE_DIR}/build:${OE_DIR}/org.openembedded.dev

Запустите скрипт, чтобы считать переменные окружения:

source ./env-oe.sh

Сборка

Отредактируйте $OE/org.openembedded.dev/conf/local.conf следующим образом:

1) поправьте переменные: BBFILES - где искать bb файлы, обычно это $OE/org.openembedded.dev/packages/*/*.bb DL_DIR - куда скачивать архивы с исходниками (не обязательно)

2) На многопроцессорных системах можно ускорить сборки образов, включив параллельную сборку:

PARALLEL_MAKE = "-j4"
BB_NUMBER_THREADS = "8"

Эти параметры нужно настроить под конкретную производительность, иначе ОС перестанет реагировать на ваши действия.

Попробуйте сначала собрать минимальное количество пакетов:

bitbake angstrom-minimal-image

Если все собралось удачно запустите сборку образа linux с графическим интерфейсом:

bitbake angstrom-x11-image-demo

Возможные ошибки при сборке

  • binutils не собираются

Ошибка: missing makeinfo

Решение: установите texinfo версии выше 4.4

  • coreutils не собираются

Ошибка: в логе ошибок упоминается что futimens уже объявлена, и имеет другую сигнатуру

Решение: патч

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);
 
  • 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=…» как написано:

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
#
  • 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:

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

на:

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
wiki/me-ms1000.txt · Последнее изменение: 2012/11/20 19:14 — 127.0.0.1