Buildroot

Предыдущая  Содержание  Следующая  V*D*V

Файловая система создаётся на основе uClibc (the microcontroller C library, библиотека Си для разработки встраиваемых систем на основе Linux) с помощью набора Buildroot.

Сам Buildroot для сборки файловой системы соберёт компилятор, который в дальнейшем будет использоваться для сборки ядра Linux и других программ.

Используем buildroot-2010.05.

http://buildroot.uclibc.org/

 

Для сборки потребуется не меньше 2 Гб дискового пространства в зависимости от числа устанавливаемых пакетов.

Перед компиляцией необходимо установить следующий набор пакетов:

GNU C/C++

GNU make

wget

sed

flex

bison

m4

patch

gettext

libtool

texinfo

autoconf

automake

ncurses library (development install)

zlib library (development install)

libacl library (development install)

lzo2 library (development install)

glib library (development install) –для некоторых из опций

 

Инсталляция для Ubuntu:

 

sudo apt-get install make flex bison m4 ncurses-dev gettext texi2html texinfo zlib1g zlib1g-dev

sudo apt-get install liblzo2-2 liblzo2-dev libacl1 libacl1-dev libglib2.0-dev autoconf automake libtool

Настройка

Чтобы в случае необходимости пересборки не закачивать пакеты, создать в своей директории папку dl и поместить на неё мягкую ссылку в каталог <buildroot>/.

 

Используем готовый кофигурационный файл.

 

Особенности настройки:

Не использовать gcc-4.4.x. - сборка даёт ошибку;

Включить сборку с++ и libstdc++;

Linux собирается отдельно;

Включить EABI;

Включить поддержку WCHAR;

 

Подложить готовый конфигурационный файл, заменив им .config, и выполнить:

 

make menuconfig

 

Включить (перечислены только особенности):

ssh-сервер bdropbear;

ftp-сервер proftpd;

ntp-сервис ntp;

ethtool;

тест памяти memtester;

Настройка Busybox

Перед настройкой Busybox подправить .config Buildroot, чтобы он использовал новую версию Busybox.

 

BR2_BUSYBOX_VERSION_1_16_X=y

BR2_BUSYBOX_VERSION="1.17.1"

 

Выполнить настройку busybox:

 

make busybox-menuconfig

 

или после того, как пакет уже загружен, в директории <buildroot-path>/output/build/busybox-1.16.2/:

 

make menuconfig

 

Настроить busybox, скопировать получившийся .config как /<buildroot-path>/package/busybox/busybox_config.

Затем в меню настройки buildroot выбрать в Package Selection for the target --> "Run BusyBox's own full installation" и указать этот файл.

 

Готовый файл конфигурации.

 

Включить (перечислены только особенности):

статическую линковку, чтобы в дальнейшем можно было использовать для создания initramfs;

Large File support;

tar, bzip2, unzip, они понадобятся для распаковки обновлений ПО;

все опции netstat;

smtp-клиент sendmail;

 

В Network выключить (перечислены только особенности):

inetd;

 

Смотри также

Busybox

http://www.busybox.net

Компиляция

Так как Buidroot не знает о выходе новых версий ядра Linux, указать версию вручную в меню toolchain->linux version или перед запуском на компиляцию отредактировать строчки файла .config:

 

BR2_DEFAULT_KERNEL_VERSION="2.6.33"

BR2_DEFAULT_KERNEL_HEADERS="2.6.33"

 

Выполнить:

 

make

 

Для buildroot-2009.08:

 

Результат сборки: /<buidroot-dir>/binaries/uclibc/rootfs.arm_nofpu.tar.bz2 ~2.5 Мб, время сборки ~2 часа.

Можно использовать /<buidroot-dir>/project_build_arm/uclibc/root/, не забыв проверить группу и владельца! В каталоге /dev устройства не имеют номеров.

Кросс-компилятор находится в каталоге: /<buidroot-dir>/build_arm/staging_dir/usr/bin.

Префикс: arm-linux-uclibcgnueabi-

 

Если в дальнейшем предполагается загрузка ядра Linux с помощью U-Boot, скопировать /<путь к U-Boot>/tools/mkimage в каталог /<buidroot-dir>/build_arm/staging_dir/usr/bin/.

 

Для buildroot-2010.05:

 

Результат сборки: /<buidroot-dir>/output/images/rootfs.tar.bz2 ~2.5 Мб, время сборки ~2 часа.

Можно использовать /<buidroot-dir>/output/target/, не забыв проверить группу и владельца! В каталоге /dev устройства не имеют номеров.

Кросс-компилятор находится в каталоге: /<buidroot-dir>/output/staging/usr/bin.

Префикс: arm-unknown-linux-uclibcgnueabi-

 

Если в дальнейшем предполагается загрузка ядра Linux с помощью U-Boot, скопировать /<путь к U-Boot>/tools/mkimage в каталог /<buidroot-dir>/output/staging/usr/bin/.

 

Если при сборке был выбран пакет LUA, эта версия почему-то не копирует результат сборки в файловую систему.

Необходимо скопировать файлы lua и luac вручную из /<buildroot>/output/staging/usr/bin в <rootfs>/usr/bin.

liblua.so.5.1.4 и liblua.so из /<buildroot>/output/build/lua-5.1.4/src/liblua.so.5.1.4 в <rootfs>/usr/lib.

 

Вообще, параметры сборки LUA непонятны, так что лучше собрать при необходимости пакет вручную.

 

Скрипт сборки lua-5.1.4:

 

#!/bin/sh

 

#export PATH=/<path>/buildroot-2009.08/build_arm/staging_dir/usr/bin:${PATH}

#export CROSS_COMPILE=arm-linux-uclibcgnueabi-

 

export PATH=/<path>/buildroot-2010.05/output/staging/usr/bin:${PATH}

export CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi-

 

make clean

make generic MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-Wl,-E -ldl" 

 

Скрипт сборки дополнительных библиотек LUA:

 

#!/bin/sh

 

#export PATH=/<path>/buildroot-2009.08/build_arm/staging_dir/usr/bin:${PATH}

#export CROSS_COMPILE=arm-linux-uclibcgnueabi-

 

export PATH=/<path>/buildroot-2010.05/output/staging/usr/bin:${PATH}

export CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi-

 

make clean

make

 

Предыдущая  Содержание  Следующая