DM500plus,DM600PVR,DM720,DM725,DM800,DM8000
Во первых нужен рабочий Linux.
В принципе, подойдет любой дистрибутив.
Желательно 32 битная версия
Для сборки имиджа, требуется много разных-всяких тулзофф Ж-)
autoconf,automake,libtool,gettext,make,makeinfo,ta r,bunzip2,gunzip,
patch,infocmp,gcc,g++,flex,bison,pkg-config,wget,rsync
Проверить, есть ли всё нужное поможет toolchecker.sh,
который мохно взять здесь -
http://cvs.tuxbox.org/tuxbox/hostapps/toolchecker/toolchecker.sh?rev=1.5&view=autoДальше - version control system's
cvs - подойдет любая версия
subversion (svn) - лучше из последних версий
git - лучше из последних версий
monotone (mtn) - обязательно версии 0.31 !
Python, - не рекомендованы версии 2.6.1 или 2.5.1
Все дальнейшие операции, лучше выполнять из обычного юзера (не root)
Сейчас девелопмент полностью переходит на GIT,
и в этом случае вы наверняка получите более свежую версию,
но поддерживается и старая система MONOTONE
Метод первый - Используем GIT.
# Перейдем в домашний каталог
cd
# Создадим рабочий каталог
mkdir GIT
# Перейдем в рабочий каталог
cd GIT
# Скачаем Makefile
wget
http://opendreambox.org/~obi/Makefile-opendreambox-1.5# Теперь надо отредактировать Makefile
# и задать нужное значение MACHINE
# в нашем случае строчка такая -
# MACHINE = dm800
vi Makefile-opendreambox-1.5
#
make -f Makefile-opendreambox-1.5 image
Метод второй - Используем MONOTONE
# Перейдем в домашний каталог
cd
# Создадим рабочий каталог
mkdir MTN
# Перейдем в рабочий каталог
cd MTN
# Скачаем Makefile
wget
http://tmb.elitedvb.net/Makefile-opendreambox# Теперь надо отредактировать Makefile
# и задать нужное значение MACHINE и DISTRO
# в нашем случае строчки такие -
# MACHINE = dm800
# DISTRO = opendreambox-1.5
vi Makefile-opendreambox
#
make -f Makefile-opendreambox image
Далле последует долгий просесс качания из интернета исходников и компиляция.
Надо иметь хороший инет, потому что обьем скачанного измеряется гигабайтами.
На пути к заветному имиджу, вас наверняка ждут различные сюрпризы.
То исходники не качаются, то программы не компилируются.
В результате вы получите вполне работоспособный имидж, который можно залить в дрим.
И ОН БУДЕТ РАБОТАТЬ !
Найти его можно в каталогах -
$HOME/GIT/dm800/build/tmp/deploy/images/dreambox-image-dm800-yyyymmmddhhmmss.nfi
или
$HOME/MTN/build/tmp/deploy/images/dreambox-image-dm800-yyyymmmddhhmmss.nfi
Кроме того в каталоге build/deploy/ipk, вы найдете кучу .ipk, которые тоже можно смело заливать в дрим.
Например там будет mc (Midnight commander), текстовый редактор joe, hddtemp, smartmontools и.т.д.
В процессе компиляции, в каталоге GIT создались дополнительные директории -
bb - битбайк (средство управления сборкой)
dm800 - основной каталог сборки
sources - исходные тексты для сборки
далее переходим в каталог dm800 - GIT/dm800
(если делась сборка для другого дрима. Каталоги, соответственно могут быть - dm500plus, dm600pvr, dm7020, dm7025, dm800, dm8000 )
Больше всего, нас заинтересуют каталоги
build (GIT/dm800/build) - здесь выполняется сборка
openembedded (GIT/dm800/openembedded) - управляющие файлы для сборки
Полный список дополнительных пэкеджей можно узнать, изучив структуру каталога GIT/dm800/openembedded/packages
(не все пекеджи можно откомпилировать без исправления ошибок)
Теперь, собственно процесс сборки.
Допустим, в каталоге GIT/dm800/openembedded/packages , мы видим каталог bash
Это то, что нам надо ! и его нет в списке стандартных пакетов и на
http://dreamboxupdate.com/opendreamb.../experimental/ !
cd GIT/dm800/build
source env.source
bitbake bash
Код:
NOTE: Using cache in '/home/el1216/GIT/dm800/cache/oe-cache.el1216'
NOTE: Parsing finished. 3939 cached, 0 parsed, 160 skipped, 28 masked.
NOTE: package bash-3.0: started
NOTE: package bash-3.0-r7: task do_fetch: started
NOTE: package bash-3.0-r7: task do_fetch: completed
NOTE: package bash-3.0-r7: task do_unpack: started
NOTE: Unpacking /home/el1216/GIT/sources/bash-3.0.tar.gz to /home/el1216/GIT/dm800/build/tmp/work/bash-3.0-r7/
NOTE: package bash-3.0-r7: task do_unpack: completed
NOTE: package bash-3.0-r7: task do_patch: started
NOTE: Applying patch 'bash-3.0-fixes.patch'
NOTE: Applying patch 'signames-mipsel.diff'
NOTE: package bash-3.0-r7: task do_patch: completed
NOTE: package bash-3.0-r7: task do_configure: started
NOTE: package bash-3.0-r7: task do_configure: completed
NOTE: package bash-3.0-r7: task do_compile: started
NOTE: package bash-3.0-r7: task do_compile: completed
NOTE: package bash-3.0-r7: task do_install: started
NOTE: package bash-3.0-r7: task do_install: completed
NOTE: package bash-3.0-r7: task do_package: started
Packaged contents of bash-dbg into /home/el1216/GIT/dm800/build/tmp/deploy/ipk/bash-dbg_3.0-r7_mipsel.ipk
Packaged contents of bash into /home/el1216/GIT/dm800/build/tmp/deploy/ipk/bash_3.0-r7_mipsel.ipk
Packaged contents of bash-doc into /home/el1216/GIT/dm800/build/tmp/deploy/ipk/bash-doc_3.0-r7_mipsel.ipk
NOTE: Not creating empty archive for bash-dev-3.0-r7
Packaged contents of bash-locale-en+boldquot into /home/el1216/GIT/dm800/build/tmp/deploy/ipk/bash-locale-en+boldquot_3.0-r7_mipsel.ipk
Packaged contents of bash-locale-en+quot into /home/el1216/GIT/dm800/build/tmp/deploy/ipk/bash-locale-en+quot_3.0-r7_mipsel.ipk
NOTE: package bash-3.0-r7: task do_package: completed
NOTE: package bash-3.0-r7: task do_populate_staging: started
NOTE: package bash-3.0-r7: task do_populate_staging: completed
NOTE: package bash-3.0-r7: task do_build: started
NOTE: package bash-3.0-r7: task do_build: completed
NOTE: package bash-3.0: completed
NOTE: build 200908130339: completed
Build statistics:
Attempted builds: 1
Еак видно из листинга, в каталоге /home/el1216/GIT/dm800/build/tmp/deploy/ipk создан пакет bash_3.0-r7_mipsel.ipk и его можно скопировать на дрим и инсталлировать стандартным образом
ipkg install bash_3.0-r7_mipsel.ipk
Можно наслаждаться нормальным bash, а не огрызками, которые предлагает BusyBox
bash мы собрали, и теперь хотим включитть его в имидж.
Что-бы не надо было доинсталлировать ручками
Внимание !
Перед выполнением всех операций, ОБЯЗАТЕЛЬНО делаем
cd GIT/dm800/build
source env.source
Редактируем файл - GIT/dm800/openembedded/packages/images/dreambox-image.bb
добавляем bash
Код:
OPENDREAMBOX_COMMON = "base-files busybox bash \
<------>ipkg initscripts-opendreambox sysvinit netbase dropbear \
<------>base-passwd ncurses joe mc vsftpd timezones-alternative \
<------>netkit-base fakelocale less dreambox-bootlogo \
<------>dreambox-dccamd dreambox-keymaps tuxbox-image-info dvbsnoop \
<------>dreambox-compat tuxbox-common mrouted smartmontools hddtemp \
<------>hotplug-ng autofs"
и запускаем сборку имиджа -
bitbake dreambox-image
Код:
NOTE: Using cache in '/home/edvard/GIT/dm800/cache/oe-cache.edvard'
NOTE: Parsing finished. 3938 cached, 1 parsed, 160 skipped, 28 masked.
NOTE: build 200908130911: started
OE Build Configuration:
BB_VERSION = "1.4.2"
OE_REVISION = "<unknown>"
TARGET_ARCH = "mipsel"
TARGET_OS = "linux"
MACHINE = "dm800"
DISTRO = "opendreambox"
DISTRO_VERSION = "1.5.0"
TARGET_FPU = "soft"
NOTE: package dreambox-image-1.0: started
NOTE: package dreambox-image-1.0-r0: task do_rootfs: started
NOTE: package dreambox-image-1.0-r0: task do_rootfs: completed
NOTE: package dreambox-image-1.0-r0: task do_build: started
NOTE: package dreambox-image-1.0-r0: task do_build: completed
NOTE: package dreambox-image-1.0: completed
NOTE: build 200908130911: completed
Build statistics:
Attempted builds: 1
Получаем новый имидж, со встроенным bash -
GIT/dm800/build.tmp/deploy/images/dreambox-image-dm800-20090813131138.nfi
Как собрать имидж со свежей enigm-ой ?
Сначала обновим GIT
cd GIT
make -f Makefile-opendreambox-1.5 openembedded-update-all
"правильный" Makefile можно скачать коммандой -
wget -O Makefile-opendreambox-1.5 "
http://git.opendreambox.org/?p=obi/makefile-opendreambox.git;a=blob_plain;f=Makefile-opendreambox-1.5;hb=HEAD"
Изменим значение переменной SRCDATE в файле GIT/dm800/openembedded/packages/enigma2/enigma2.bb на сегодняшнее число -
Код:
SRCDATE = "20090814"
cd GIT/dm800/build
source env.source
bitbake enigma2
bitbake dreambox-image
Как почистить и пересобрать - аналог (make clean ; make)
Полная очистка и пересборка имиджа
bitbake -cclean world
bitbake dreambox-image
Очистка и пересборка enigma2
bitbake -cclean enigma2
bitbake enigma2
Как "прикрутить" свои программы, модификации, дополнения и.т.д в имидж ?
Правильный путь:
создать пакет (типа myimage.bb) и включать это в dreambox-image.bb
Потребует глубокого изучения материала.
Можно грубо и не по джентльменски :
в файле GIT/dm800/openembedded/classes/rootfs_ipk.bbclass найти функцию real_do_rootfs.
В конце этой функции вызвать свой скрипт настройки.
Этот скрипт модифицирует (добавит) файлы в подкаталогах GIT/dm800/build/tmp/rootfs
И bitbake dreambox-image всё это безобразие запакует в образ.
Как самому скомпилировать что-нибудь OpenSource для дрима ?
Для облегчения процесса кросскомпиляции и создани среды, предусмотрена специальная фича.
bitbake devshell
source GIT/dm800/build/tmp/deploy/addons/mipsel-linux-opendreambox-dm800-devshell
Дальше всё как обычно, только -
oe_runconf - заменяет стандартный configure
oe_runmake - заменяет стандартный make