Bekijk de volledige versie : интеграция софта из optware в прошивку 10-d
По роду деятельности мне необходимо было интегрировать в прошивку дополнительный софт, в моем случае это net-snmp и openvpn (которому нужны openssl и lzo), с другой стороны мне не нужны некоторые проги которые уже есть в прошивке например samba, на форуме ничего толкового не нашел, для Олега и других гуру которые собирают прошивку 10-d, это раз плюнуть, но мне интересно было самому разобраться и лишний раз приставать к гуру не хотелось.
Итак я нашел для себя некий путь интеграции дополнительного софта, который уже есть в optware , то бишь который ставится через ipkg в основную прошивку. За основу был взят optware http://svn.nslu2-linux.org/svnroot/optware/trunk/ и прошивка 10-d http://code.google.com/p/wl500g за что всем трудившимся над 10-d огромный респект.
Сборку прошивки начинаем как описано в доке (http://code.google.com/p/wl500g/wiki/CompilingCustomFirmware). После того как сделали svn checkout в файл Makefile.top добавяем строчку
include ../optware-d/.config
сразу после первого include.
Прицепленный архив сохранить в /whatever-you-want/broadcom/src/
далее
tar -zxvf optware-d.tgz
Далее как по доке
cd /whatever-you-want/broadcom/src/1.9.2.7-d
make kernel
make
после этого следуя все той же доке перейти в папку gateway и также по доке дать команду make, теперь настало время для сборки optware-d
в файле optware-d/.config отметить какие именно пакеты нужны для сборки и после этого
cd ../optware-d
make checkout
make
make install
Ну и сборка trx
cd ../gateway
make install
========
Как это работает:
В optware-d/make.inst находятся mk файлы с переопределением целей install: в принципе там можно переопределить любую цель, но чаще всего приходится переопределять именно install, так как файлы инсталлятся вместо /opt в /usr. Посмотрев на примеры все должно стать понятно. Переопределение цели install требуется в том случае ели универсальная цель install которая находится в Makefile не сработала. Не весь софт имеет собственную цель install-strip в своих мэйкфайлах.
PS: В данный момент количество роутеров в подчинении у меня достигло практически 240 штук, в разработке находится система управления всем этим чудо набором. Централизованная система администрирования, обновления и мониторинга. Если кому интересно поучаствовать в разработке пишите.
theMIROn
21-08-2009, 16:53
было бы интересно
openvpn помоему можно без зжатия юзать, lzo чтобы не запихивать...
openvpn помоему можно без зжатия юзать, lzo чтобы не запихивать...
можно, но у меня задача была именно с lzo потому как на сервере lzo используется, а 200 штук wl500w работают клиентами, а вот поддержку zlib для openssl я отключил, потому как действительно не нужно.
2all: Ну что ж раз есть заинтересованность тогда я приступаю к написанию доки, как будет готова выложу здесь.
В идеале хотелось бы сделать некое подобие системы сборки в которой любой смог бы собрать под себя прошивку и именно с тем софтом который ему нужен. Ядро допустим одно, как и набор модулей + pppoe, pptp и тд. А вот софт уже можно было бы включать только тот который нужен конкретному человеку. Я думаю перспектива у этой разработки есть, особенно в теме того что скоро асус выпустит новый девайс с 32Мб флеша на борту.
Да кстати еще один плюс интеграции софта в прошивку, все собирается одним тулчейном и нет необходимости ставить дополнительные либы uclibc-opt. А опыт эксплуатации 200 штук роутеров показывает что флешки имеют обыкновение иногда отваливаться, приходится перетыкивать и ребутить девайс.
PS: Кстати если пойти совсем глубже то для меня разработка имеет целью сделать одну прошивку для 200 точек доступа с openvpn, где единственное что нужно отконфигать это только настроить подключение к провайдеру. А индивидуальные ключи openvpn, настройки стартапа демонов (все post-boot, post-mount и тд) скачиваются при первом запуске роутера единым архивом с сервера идентифицируясь по MAC адресу. Дальнейшее управление роутером осуществляется по snmp, можно добиться полной управляемости вплоть до перепрошивки роутера с сервера.
Сборка customized прошивки с компонентами из optware
За основу взяты следующие компоненты:
Ubuntu 9.04 i386
Проект http://code.google.com/p/wl500g/ для сборки прошивки 10-d rev. 476
Проект optware http://svn.nslu2-linux.org/svnroot/optware/trunk/
Для начала необходимо подготовить систему для сборки прошивки, я устанавливаю убунту в VirtualBox и необходимые пакеты следуя указаниям на http://code.google.com/p/wl500g/wiki/CompilingCustomFirmware
sudo apt-get install build-essential
sudo apt-get install libncurses5-dev
sudo apt-get install gawk
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install zlib1g-dev
sudo apt-get install subverion
mkdir -p ~/asus/downloads
cd ~/asus/downloads
wget http://dlsvr02.asus.com/pub/ASUS/wireless/WL-500g-03/GPL_1927.zip
wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.37.5.tar.bz2
wget http://wl500g.googlecode.com/files/hndtools-mipsel-uclibc-4.1.2-3.tar.bz2
sudo chown dvg /opt
запускаем скрипт в дире downloads который все распаковывает и подготавливает для сборки
#!/bin/sh
BASE_PATH="/home/dvg/asus"
SRC_PATH="/home/dvg/asus/downloads"
KERNEL="linux-2.4.37.5"
rm -rf $BASE_PATH/broadcom/*
tar -C $BASE_PATH -zxvf $SRC_PATH/GPL_1927.zip
rm -rf $BASE_PATH/broadcom/src/linux/linux
tar -C $BASE_PATH/broadcom/src/linux -jxvf $SRC_PATH/$KERNEL.tar.bz2
ln -sf $BASE_PATH/broadcom/src/linux/linux-2.4.37.5 $BASE_PATH/broadcom/src/linux/linux
rm -rf $BASE_PATH/broadcom/opt
svn checkout http://wl500g.googlecode.com/svn/trunk/ $BASE_PATH/broadcom/src/wl500g-1.9.2.7-d
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk $BASE_PATH/optware
rm -rf /opt/brcm
mkdir /opt/brcm
tar -C /opt/brcm -jxvf $SRC_PATH/hndtools-mipsel-uclibc-4.1.2-3.tar.bz2
ln -sf /opt/brcm/hndtools-mipsel-uclibc-4.1.2 /opt/brcm/hndtools-mipsel-uclibc
Для удобства редактируем ~/.profile
export PATH=$PATH:/opt/brcm/hndtools-mipsel-uclibc/bin
На этом этапе у нас все готово для оригинальной 10-d сборки. Подготавливаем optware для сборки пакетов под платформу oleg.
cd ~/asus/optware
make oleg-target
Теперь нужно выкачать нужные нам исходники пакетов для интеграции в систему сборки firmware, в то время как патчи к сырцам у нас уже лежат в ~/asus/optware/sources
cd ~/asus/optware/oleg
make lzo-source
make openssl-source
make openvpn-source
make net-snmp-source
Теперь нужно положить патчи и архивы в ~/asus/broadcom/src/sl500g-1.9.2.7-d
cd ~/asus/optware/downloads
cp lzo-1.08.tar.gz ~/asus/broadcom/src/wl500g-1.9.2.7-d/
cp openvpn-2.1_rc15.tar.gz ~/asus/broadcom/src/wl500g-1.9.2.7-d/
mkdir ~/asus/broadcom/src/wl500g-1.9.2.7-d/openssl
cp openssl-0.9.7m.tar.gz /home/dvg/asus/broadcom/src/wl500g-1.9.2.7-d/openssl/
cd ~/asus/optware/sources/openssl && cp openssl-0.9.7m.tar.gz /home/dvg/asus/broadcom/src/wl500g-1.9.2.7-d/openssl/
mkdir ~/asus/broadcom/src/wl500g-1.9.2.7-d/net-snmp
cp net-snmp-5.4.2.1.tar.gz /home/dvg/asus/broadcom/src/wl500g-1.9.2.7-d/net-snmp/
cd ../sources/net-snmp/
cp SNMP_FREE-gcc4.patch /home/dvg/asus/broadcom/src/wl500g-1.9.2.7-d/net-snmp/
Осталось поправить файлик ~/asus/broadcom/src/wl500g-1.9.2.7-d/Makefile. Основываемся на ревизии 476 для прошивки 10-d, дифф в аттаче под именем Makefile1.diff
Теперь можно можно приступать к сборке:
cd ~/asus/broadcom/src/wl500g-1.9.2.7-d
make kernel
make
Теперь у нас появился каталог ~/asus/broadcom/src/gateway в котором лежит свой Makefile, собирающий непосредственно бинарники софта и в итоге trx файл. Этот Makefile тоже необходимо поправить для сборки дополнительных пакетов. Дифф в аттаче под именем Makefile2.diff
Далее в файле ~/asus/broadcom/src/gateway/.config указываем следующие опции
CONFIG_LZO=y
CONFIG_OPENSSL=y
CONFIG_OPENVPN=y
CONFIG_NETSNMP=y
Тут же можно закомментить пакеты которые не нужны в итоговой прошивке. Я лично убрал следующие:
upnp
jpeg6b
rcamd
lprng
bpalogin
waveserver
jetdirect
samba
nfsd
nfs
snmp
igmpproxy
scsiidle
Для подкладывания уже собранных бинарников, таких как например tcpdump, делаем следующее:
mkdir ~/asus/broadcon/src/router/Addon
cp tcpdump ~/asus/broadcon/src/router/Addon
Makefile который собирает прошивку сам заберет оттуда файлики и положит в прошивку в /usr/sbin
последний штрих
cd ~/asus/broadcom/src/gateway
make
make install
Принцип портирования
Нужно понимать несколько основных моментов, первое мы собираем софт используя тот же тулчейн которым собирается прошивка, а значит мы избавляемся от лишних библиотек, и второе, раз софт собирается через систему сборки optware значит его можно заставить собираться и тулчейном собирающим прошивку. Насколько я смог разобраться файл ~/asus/broadcom/src/wl500g-1.9.2.7-d/Makefile предназначен для подготовки исходников к компиляции, его задача создать в директории ~/asus/broadcom/src/ диру с именем пакета, например lzo. Здесь же можно использовать патчер в виде $(PATCHER) который накладывает патчи на исходники, а также запустить скрипт ./configure который подготовит исходники непосредственно к сборке через Make. Но мне показалось что использовать ./configure для крупных пакетов непосредственно в этом файле не совсем удобно. Поэтому здесь я запускал ./configure только для lzo который не требовал особых переменных окружения и параметров сборки. Все остальные проги я конфигал в другом мейкфайле - ~/asus/broadcom/src/gateway/Makefile и тут же происходит непосредственно компиляция исходников.
Вобщем основной принцип такой, смотрим в файл ~/asus/optware/make/packet-name.mk где packet-name.mk это один из нужных вам пакетов и находим секции с именем packet-name-unpack идем в ее цель и понимаем каким образом накладываются патчи и с какими параметрами запускается скрипт ./configure чаще всего необходимо правильно установить переменные окружения для указания правильного тулчейна типа как в ~/asus/broadcom/src/gateway/Makefile:
export CC := $(CROSS_COMPILE)gcc
export AR := $(CROSS_COMPILE)ar
export AS := $(CROSS_COMPILE)as
export LD := $(CROSS_COMPILE)ld
export NM := $(CROSS_COMPILE)nm
export RANLIB := $(CROSS_COMPILE)ranlib
export STRIP := $(CROSS_COMPILE)strip
export SIZE := $(CROSS_COMPILE)size
а также передаче правильных параметров --host, --target, --build скрипту ./configure. Далее смотрим секцию packet-name/.build и понимаем с какими параметрами запускается Make собственно больше нам ничего и нужно.
Итак в ~/asus/broadcom/src/wl500g-1.9.2.7-d/Makefile перетаскием секции по распаковке и накладыванию патчей по желанию конфигурирования, а в ~/asus/broadcom/src/gateway/Makefile перетаскиваем непосредственно секции сборки (ну и конфигурирования если еще не было).
Последний этап это секция install в которой основное место отведено утилите $(STIP) для удаления отладочной информации из бинарников, в свете уменьшения их размера.
Все это писалось на коленке и "под себя" поэтому "костылей" пока что много. Хотелось бы таким образом портировать с optware значительную часть софта и простым указанием в ~/asus/broadcom/src/gateway/.config необходимых пакетов собирать прошивку именно с тем софтом который нужен. Вот для доведения этой работы до ума, прошу народ откликнуться. В особенности хотелось бы услышать комментарии theMIROn :)
Но мне показалось что использовать ./configure для крупных пакетов непосредственно в этом файле не совсем удобно. Поэтому здесь я запускал ./configure только для lzo который не требовал особых переменных окружения и параметров сборки. Все остальные проги я конфигал в другом мейкфайле - ~/asus/broadcom/src/gateway/Makefile и тут же происходит непосредственно компиляция исходников.
Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех configure в gateway/Makefile) идём.
Все это писалось на коленке и "под себя" поэтому "костылей" пока что много. Хотелось бы таким образом портировать с optware значительную часть софта и простым указанием в ~/asus/broadcom/src/gateway/.config необходимых пакетов собирать прошивку именно с тем софтом который нужен. Вот для доведения этой работы до ума, прошу народ откликнуться. В особенности хотелось бы услышать комментарии theMIROn :)
Я не theMIROn ;), но думаю, что проделанная работа, а в особенности опубликованное руководство, будут полезны очень многим :)
Теоретически, приделать механизм сборки пакетов из optware, возможно, но у нас пока хватает более приоритетных задач. Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.
P.S. Также неплохая система с пакетами и их автоматическим скачиванием реализована в OpenWRT
Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех configure в gateway/Makefile) идём.
Я честно говоря изначально размышлял об отдельном проекте на code.google.com, как раз дабы не мешать разрабатываемой вами d версии, но если удастся все это интегрировать в одно место, то получится еще лучше конечно. Правда пока особых мыслей по этому поводу нет...
Я не theMIROn ;), но думаю, что проделанная работа, а в особенности опубликованное руководство, будут полезны очень многим :)
Теоретически, приделать механизм сборки пакетов из optware, возможно, но у нас пока хватает более приоритетных задач. Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.
Твое мнение для меня тоже важно. Вообще вы, молодцы, проделали огромную работу и отдельное спасибо за то что выложили свой труд на code.google.com. Я обмозгую каким образом можно интегрировать это все в ваш проект.
P.S. Также неплохая система с пакетами и их автоматическим скачиванием реализована в OpenWRT
Спасибо гляну, но вобщем-то и здесь в optware система не плохая, если делать по уму, то как раз нужно перетаскивать систему закачки исходников, где-то брать патчи (хотя патчи можно интегрировать в проект, они маленькие), а дальше уже дело техники. Может быть это все оформить отдельными Makefile`ами и инклюдить их в broadcom/src/wl500g-1.9.2.7-d/Makefile и broadcom/src/gateway/Makefile ? Как раз эти два файла довольно часто изменяются в svn, и делать diff на каждую верисию конечно не комильфо. Мне видится пока два пути, либо делать отдельный Makefile и на каком-то этапе его запускать, например после сборки ядра и распаковки всех исходников пакетов, либо сделать пару include в обоих мэйкфайлах и уже в них непосредственно добавлять сборку дополнительного вареза... Надо обмозговать.
Да еще фишка в том что интеграция доп. софта не всегда будет гладкой, многим пакетам нужны конфигурационные файлы типа того же openvpn.conf который должен быть доступен в режиме rw. Тут уже либо этот аспект перекладывать на юзера чтобы сам ставил куда надо, либо скадывать их в /usr/share/examples и оттуда уже юзер будет копировать куда надо и там править.
theMIROn
24-08-2009, 17:13
во первых спасибо за мануал, полезно держать такие how-to в одном месте.
Я честно говоря изначально размышлял об отдельном проекте на code.google.com, как раз дабы не мешать разрабатываемой вами d версии, но если удастся все это интегрировать в одно место, то получится еще лучше конечно. Правда пока особых мыслей по этому поводу нет...Отдельный бранч, почему бы и нет. Можно обдумать.
Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех configure в gateway/Makefile) идём.
угу, в этом случае более четкие зависимости выстроятся и не нужно будет прыгать через голову с опциями библиотек.
Мне видится пока два пути, либо делать отдельный Makefile и на каком-то этапе его запускать, например после сборки ядра и распаковки всех исходников пакетов, либо сделать пару include в обоих мэйкфайлах и уже в них непосредственно добавлять сборку дополнительного вареза... Надо обмозговать.
Второй пусть a-la optware с мелкими mk файлами лично для меня более предпочтителен, да и более удобен в повседневном обращении.
Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.
обеими руками за.
во первых спасибо за мануал, полезно держать такие how-to в одном месте.
Надеюсь пригодится.
Отдельный бранч, почему бы и нет. Можно обдумать.
Мне тоже кажется это хорошая идея, можно отдельно не мешая основной ветке пытаться собрать все части вместе.
угу, в этом случае более четкие зависимости выстроятся и не нужно будет прыгать через голову с опциями библиотек.
в том то и дело что либы от тулчейна из optware на самом деле не нужны.
Второй пусть a-la optware с мелкими mk файлами лично для меня более предпочтителен, да и более удобен в повседневном обращении.
ок, тогда я попробую обмозговать и переработать в отдельные мелкие файлы, идеологически это правильнее, нужно только разобраться каким образом идет обход целей при сборке прошивки в trx файл. Я так понимаю что именно -install цели и используются.
обеими руками за.
хорошо, я только надеюсь что вы с lly и всеми остальными мне поможете. Я собсно далеко не гуру в этих делах, но есть желание довести это до ума :)
Решил пойти немного по другому пути, дабы не перелопачивать каждый mk файл из состава optware, переписать главный Makefile от optware таким образом чтобы можно было легко интегрировать его в сборку 10-d. То есть mk файлы остаются от optware, а главный Makefile собирает бинарники, со всеми stage целями, так как от зависимостей по любому никуда не деться и по цели install складывает бинари туда же куда и Makefile собирающий прошивку - gateway/mipsel-uclibc/target/install, потом в итоге все само попадет куда надо.
Из плюсов - никаких изменений в мэйкфайлы из прошивки 10-d не производится, на этапе между сборкой ядра и бинарников нужно будет стянуть с svn дополнительную диру и также запустить в ней make && make install и после этого уже собирать trx файл. Получается достаточно независимая часть которую и мантейнить можно отдельно и оперативно обновлять mk файлы из optware. Как-то так...
PS: Я пока на начальном этапе, как только более менее в человеческий вид приведу, дам линк на svn.
Решил пойти немного по другому пути, дабы не перелопачивать каждый mk файл из состава optware, переписать главный Makefile от optware таким образом чтобы можно было легко интегрировать его в сборку 10-d. То есть mk файлы остаются от optware, а главный Makefile собирает бинарники, со всеми stage целями, так как от зависимостей по любому никуда не деться и по цели install складывает бинари туда же куда и Makefile собирающий прошивку - gateway/mipsel-uclibc/target/install, потом в итоге все само попадет куда надо.
IMHO правильный вариант.
Можно будет еще автоматизировать процесс, при выставлении CONFIG_OPTWARE=y в .config прошивки, автоматом вызывать в нужных местах
make -C $OPTWARE_DIR
make -C $OPTWARE_DIR install
IMHO правильный вариант.
Можно будет еще автоматизировать процесс, при выставлении CONFIG_OPTWARE=y в .config прошивки, автоматом вызывать в нужных местах
make -C $OPTWARE_DIR
make -C $OPTWARE_DIR install
В приципе да, я только одного не учёл в mk файлах optware нету целей install что логично, есть цели сборки ipk но они нам в принципе не нужны. Я думаю придется сделать единую цель %-install для всех пакетов, а там где необходимо - оверрайдить на конкретные pkg-install цели, которые уже придется писать вручную, но это все равно гораздо меньший труд нежели перелопачивать весь mk файл. А так можно в отдельных файликах наделать оверрайдовые install цели и мешать не будут и в принципе будет нормально.
Тем более что с /etc все равно нужно что-то делать. Вобщем костяк уже готов, проверил esmtp с двумя зависимостями уже собирается, останется причесать и интегрировать в ваш проект.
После многочисленных переделок и переработок в итоге получилось следующее. Процедура сборки прошивки 1.9.2.7-d меняется следующим образом:
сборка производится в соответствии с документом http://code.google.com/p/wl500g/wiki/CompilingCustomFirmware вплоть до пункта 4.3, пункт 4.3 соответственно изменяется на следующий:
$ cd /whatever-you-want/broadcom/src/gateway
Редактируем Makefile и добавляем туда следующую строку
include ../optware-d/.config
сразу после строки
include .config
После этого скачиваем модифицированный optware и устанавливаем его для сборки
svn co http://svn.tjc.ru/svn/sur/trunk/ /whatever-you-want/broadcom/src/optware-d
cd /whatever-you-want/broadcom/src/optware-d
Правим на свой вкус файлик .config, добавляя или удаляя по аналогии софт, который нужно установить. После этого можно начинать сборку.
cd /whatever-you-want/broadcom/src/gateway
make
По команде
cd /whatever-you-want/broadcom/src/optware-d
make checkout
скачиваются две директории make и sources из репозитария optware. Теперь можно собирать и ставить, тут же выполняем
make
make install
Ну и сборка trx файла
cd /whatever-you-want/broadcom/src/gateway
make install
Принцип работы
В дире optware-d/make.inst находятся файлы вида esmtp.mk в которых нужна одна единственная цель install: по которой собственно происходит установка файлов пакета в соотвутствующую диру в /whatever-you-want/broadcom/src/gateway/mipsel-uclibc/install. В файле optware-d/Makefile есть универсальная цель install: но она может подойти не для всех пакетов. Где-то потребуется ручное описание цели в соответствующем файле.
Все цели скачивания и сборки, а также stage, для пакетов берутся из *.mk файлов optware в которых изменяется префикс /opt на /usr.
Версия предварительная, рад буду услышать отзывы. Основной Makefile пока что еще запутан и наверняка содержит ошибки, но у меня работает.
Сразу скажу, что еще сам не успел попробовать, а замечания чисто умозрительные.
Редактируем Makefile и добавляем туда следующую строку
include ../optware-d/.config
сразу после строки
include .config
Для сего предлагаю добавить переменные основного .config'а:
CONFIG_OPTWARE= y|n
CONFIG_OPTWARE_PATH= ../optware-d по умолчанию
ну, и соотвественно, добавить нужные строчки в Config.in для менюшек
После этого скачиваем модифицированный optware и устанавливаем его для сборки
svn co http://svn.tjc.ru/svn/sur/trunk/ /whatever-you-want/broadcom/src/optware-d
cd /whatever-you-want/broadcom/src/optware-d
Правим на свой вкус файлик .config, добавляя или удаляя по аналогии софт, который нужно установить. После этого можно начинать сборку.
cd /whatever-you-want/broadcom/src/gateway
make
По команде
cd /whatever-you-want/broadcom/src/optware-d
make checkout
скачиваются две директории make и sources из репозитария optware.
Вот здесь, если можно, поподробнее. В моём представлении весь download optware, кроме исходников самих пакетов, должен пройти по "svn co". Или речь об копировании собранных пакетов в src/gateway/mipsel-uclibc?
Если можешь, посмотри куда лучше запихнуть вызовы сборки optware, закрытые
ifneq ($(CONFIG_OPTWARE),)
endif
Для сего предлагаю добавить переменные основного .config'а:
CONFIG_OPTWARE= y|n
CONFIG_OPTWARE_PATH= ../optware-d по умолчанию
С этим согласен, можно в ваш .config запихать.
ну, и соотвественно, добавить нужные строчки в Config.in для менюшек
А вот тут не догнал, что за Сonfig.in для менюшек?
Вот здесь, если можно, поподробнее. В моём представлении весь download optware, кроме исходников самих пакетов, должен пройти по "svn co". Или речь об копировании собранных пакетов в src/gateway/mipsel-uclibc?
по make checkout происходит следующее
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk/sources/ $(SOURCE_DIR)
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk/make/ $(MAKE_DIR)
Где переменные это диры внутри optware-d. Короче просто чекаут двух директорий из репозитария optware. Можно в включить цель checkout: как зависимость для цели all: и тогда не нужно будет отдельно давать команду make checkout, нужно подумать как это сделать красивее с учетом двух команд svn co и svn up в дальнейшем.
Вообще конечно лучше было бы если бы ты глянул мой Makefile, ато я мож там намудрил чего лишнего. :)
Если можешь, посмотри куда лучше запихнуть вызовы сборки optware, закрытые
ifneq ($(CONFIG_OPTWARE),)
endif
Что касается broadcom/src/gateway/Makefile который собирает бинари и trx то там есть небольшая засада, цель package-%: которая собирает сам trx файл из структуры директорий broadcom/src/gateway/mipsel-uclibc/target имеет в себе одну не очень приятную команду в самом начале
rm -rf $(TARGETDIR) && install -d $(TARGETDIR)
то есть понятно, что единственный способ не нарушая структуру, это устанавливать все бинари собранные optware-d в диру broadcom/src/gateway/mipsel-uclibc/install и дальше добавлять название пакета (что является именем диры в install) в переменную $(obj-y) по которой дальше и идёт наполнение диры target из диры install.
Поэтому правильное место для сборки optware-d это где-то сразу за целью сборки madwimax, то есть как бы сборка продолжится дальше. Вот кстати еще вопрос толи делать include толи вызывать напрямую через make -C $(CONFIG_OPTWARE_PATH)... надо подумать.
Ты все же глянь в мой Makefile мож картина сразу прояснится.
А вот тут не догнал, что за Сonfig.in для менюшек?
В src/gateway работает стандартная команда
make menuconfig
менюшки для этого нарисованы в config/Config
Вообще конечно лучше было бы если бы ты глянул мой Makefile, а то я мож там намудрил чего лишнего. :)
Вот только долечим срочно ядерный l2tp и займемся.
то есть понятно, что единственный способ не нарушая структуру, это устанавливать все бинари собранные optware-d в диру broadcom/src/gateway/mipsel-uclibc/install и дальше добавлять название пакета (что является именем диры в install) в переменную $(obj-y) по которой дальше и идёт наполнение диры target из диры install.
Я бы добавил инсталляцию optware в packages-% через make -C $(CONFIG_OPTWARE_PATH) install
Поэтому правильное место для сборки optware-d это где-то сразу за целью сборки madwimax, то есть как бы сборка продолжится дальше. Вот кстати еще вопрос толи делать include толи вызывать напрямую через make -C $(CONFIG_OPTWARE_PATH)... надо подумать.
IMHO второе (make)
В src/gateway работает стандартная команда
make menuconfig
менюшки для этого нарисованы в config/Config
ааа, то что отрабатывает по make config, я даже не знал и не замечал :)
Вот только долечим срочно ядерный l2tp и займемся.
ну как раз тут мне еще optware нужно допилить, пока что еще много косяков, попробовал собрать nano - не собрался, нужно фактически все переменные из мэйкфайлов от optware перетаскивать, и так чтобы не пересекались со всем остальным. Вобщем пока как раз покручу...
Я бы добавил инсталляцию optware в packages-% через make -C $(CONFIG_OPTWARE_PATH) install
ну в принципе инсталляцию можно и туда запихать
IMHO второе (make)
ок, я думаю это действительно правильнее.
после прочтения темы ощущение того что топикстартер увлекся теоретическим исследованием, а потом забил на него...
всем было бы проще если бы в 1ый пост добавили КОНКРЕТНУЮ инфу - работает до конца метод по интеграции софта из optware в firmware или нет ?
тема нужная, полезная, вот только довести бы ее до логического завершения
целый топик рассуждений, что работает\что как можно когда-нибудь сделать, и без выводов\результатов, получилось ли
результаты именно такие, какие есть. Либо топикпастер решил вопрос для себя и забыл опубликовать решение, тем более, что интерес у него был профессиональный, либо забил на проблему.
Так что резюмируя --- сделать можно, но пока никем не сделано и не изложено. В первый пост выносить пока нечего.
Топик стартер реализовал все что нужно было для проекта и ввиду отсутствия интереса у народа малость подзабил на форум. Короче говоря сейчас у меня все работает по последнему описанию (http://wl500g.info/showpost.php?p=158353&postcount=14) дальше ковырять не стал потому что времени причесывать не было, а проект нужно было сдавать.
На данный момент прошивка собирается с дополнительными скриптами инициализации (в добавок к post-boot и тд) и следующим набором совта:
libesmtp
esmtp
lzo
openssl
openvpn
net-snmp
wget
trx файл при этом занимает немногим более 5Мб, основываясь на 10-d в ревизии 893. У нас все роутеры (около 230шт) WL500W в которых 8 метров флеша, так что 5 метров прошивки не парит.
Используется все это для создания сетки для ритейла, магазины, региональные офисы, отделения и тд. все цепляются к одному openvp серверу, таким образом оказываются в одной сети. И на любой комп в любой провинции можно залезть через radmin или vnc.
Роутеры при первом включении после прошивки лезут на сервак скачивают индивидуальные настройки (впн ключи, настройки лан сети, актуальные post-boot, post-firewall и тд), сами настраиваются, сохраняют все во внутреннем флеше, с сервака можно попросить любой роутер обновится ид.
Все это мониторится посредством cacti, сейчас думаю еще netflow к роутерам прикрутить чтоб бить по шапке регионалов за гигабайты траффика.
Фишек в принципе много и я сам заинтересован развивать разработку прошивки именно в этом направлении. А вот до ума довести optware все руки не доходят. До ума я имею ввиду чтоб в официальную систему сборки требовалось добавить только строки типа obj-y += esmtp а все остальное система сборки делала сама. К сожалению в ближайшие 3 месяца вряд ли будет время этим заниматься.
Если есть какие-то вопросы по сборке всегда рад помочь, задавайте.
Я тут обновил первый пост, для удобвства. Система сборки optware-d немного переработана, проверена на релизах r.2624 для d и для rtn r2861.
Я тут обновил первый пост, для удобвства. Система сборки optware-d немного переработана, проверена на релизах r.2624 для d и для rtn r2861.
Я тут немного причесал и подправил ваш Makefile с целью устранения противоречий и работоспособности сборки *.mk использующих сборку host-варианта.
Брать тут (http://alxdm.dyndns-at-work.com:808/asus/optware-d/optware-d-system.tar.gz)
Подправил ошибку при сборке zlib (очень странно, что export перед TARGET_ARCH=mipsel приводит к такому эффекту...)
GLIB (при добавлении iconv и gettext в toolchain) уже собирается, а вот mc ещё не полностью... Продолжаю копать...
Брать тут (http://alxdm.dyndns-at-work.com:808/asus/optware-d/optware-d-system-2.tar.gz)