Buildroot |
Предыдущая Содержание Следующая |
|
Файловая система создаётся на основе uClibc (the microcontroller C library, библиотека Си для разработки встраиваемых систем на основе Linux) с помощью набора Buildroot. Сам Buildroot для сборки файловой системы соберёт компилятор, который в дальнейшем будет использоваться для сборки ядра Linux и других программ. Используем buildroot-2010.05.
Для сборки потребуется не меньше 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 КомпиляцияТак как 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
|
Предыдущая Содержание Следующая |