OpenEmbedded/Установка
Материал из b4wiki
Установка OpenEmbedded
Для начала надо проверить, установлено ли в системе все необходимое. Для этого идем сюда: http://wiki.openembedded.net/index.php/OEandYourDistro и устанавливаем все необходимое из списка в соответствии с дистрибутивом. Кроме BitBake.
Немного о пути к файлам. Допустим что у нас OpenEmbedded будет жить в домашнем каталоге. Соответственно все приведенные ниже пути будут начинаться с /home/user, где user - имя вашей домашней директории. Сам OpenEmbedded будет жить в папке oe. T.е. полный путь будет
/home/user/oe
Теперь, когда у нас установлено все необходимое и мы определились с путями - поставим BitBake и OpenEmbedded.
BitBake:
svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake
Когда subversion закончит - у нас будет BitBake, готовый собирать изо всех сил. Соответственно полный путь к нему будет
/home/user/oe/bitbake.
OpenEmbedded:
git clone git://git.openembedded.net/openembedded
После того как git закончит - у нас будет полный набор софта для работы с OpenEmbedded:
/home/user/oe
|-- bitbake
| `-- ......
`-- openembedded
|-- COPYING.MIT
|-- MAINTAINERS
|-- README
|-- classes
|-- conf
|-- contrib
|-- files
|-- packages
|-- removal.txt
`-- site
Настройка
Все необходимое у нас есть, надо это все настроить. Это не так сложно. Настраивать будем для hp hx4700 и в качестве дистрибутива выберем Аngstrom.
Никуда не уходим из директории oe - все дальнейшие команды выполняются прямо из нее.
Создадим в директории oe директорию build, а в ней conf:
mkdir -p build/conf
Теперь нам надо создать место для исходников:
mkdir sources
Если настраиваем под b4 - нам сюда
За основу главного конфига возьмем файл openembedded/conf/local.conf.sample:
cp openembedded/conf/local.conf.sample build/conf
Заточим этот конфиг под наши нужды:
DL_DIR - он указывает на директорию, в которую будут скачиваться исходники.
DL_DIR = "${HOME}/oe/sources"
BBFILES - путь к коллекции *.bb файлов. В нашем случае:
BBFILES = "${HOME}/oe/openembedded/packages/*/*.bb"
BBMASK - маска для исключения из обработки некоторых *.bb файлов. В нашем случае оставляем как есть - пустую.
BBMASK = ""
Пропускаем все до параметра MACHINE - выбираем платформу, под которую собирать. В нашем случае - hx4700
MACHINE = "hx4700"
А вот и настала очередь выбора дистрибутива - за него отвечает параметр DISTRO:
DISTRO = "angstrom-2008.1"
Если нам повезло, и у нас многопроцессорная система - имеет смысл воспользоваться этим и собирать в несколько параллельных потоков:
PARALLEL_MAKE = " -j 4"
ACHTUNG: если при сборке возникают какие-то ошибки - всему виной может стать именно этот параметр. Так что в случае возникновения проблемм - надо попробовать его закомментировать.
Теперь смело идем в конец файла и комментируем там строчку: REMOVE_THIS_LINE:="${@bb.fatal('Read the comments in your conf/local.conf')}"
С конфигом покончено. Установим переменные окружения в шелле. Я использую для этого source-файл:
source-me.tcsh:
setenv PATH "/home/yl/oe/bitbake/bin:"$PATH setenv BBPATH "/home/yl/oe/openembedded:/home/yl/oe/build:"
Это работает в tcsh, если у вас bash или что-то еще - надо будет немного подправить.
Устанавливаем окружение при помощи нашего source-файла, переходим в директорию build и проверяем работоспособность:
cd build bitbake helloworld
Появится что-то вроде:
NOTE: Handling BitBake files: | (0101/6400) [ 1 %]
Это значит, что конфиг мы настроили правильно, и BitBake уже парсит коллекцию *.bb файлов.
Если дальше понеслись страшные строки, вида:
NOTE: Running task 23 of 448 (ID: 47,
/home/urx/oe/openembedded/packages/quilt/quilt-native_0.46.bb,
do_configure)
NOTE: package quilt-native-0.46: started
NOTE: package quilt-native-0.46-r2: task do_configure: started
NOTE: package quilt-native-0.46-r2: task do_configure: completed
NOTE: package quilt-native-0.46: completed
NOTE: Running task 24 of 448 (ID: 200,
/home/urx/oe/openembedded/packages/gnu-config/gnu-config-native_20050701.bb,
do_setscene)
значит все хорошо - парсинг прошел успешно и началась сборка. Теперь BitBake соберет все необходимые программы для cross-компиляции и ими соберет пакет helloworld.
