PDA

Bekijk de volledige versie : интеграция софта из optware в прошивку 10-d



dvg_lab
21-08-2009, 16:40
По роду деятельности мне необходимо было интегрировать в прошивку дополнительный софт, в моем случае это 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
было бы интересно

2bars
21-08-2009, 17:50
openvpn помоему можно без зжатия юзать, lzo чтобы не запихивать...

dvg_lab
22-08-2009, 12:37
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, можно добиться полной управляемости вплоть до перепрошивки роутера с сервера.

dvg_lab
24-08-2009, 15:32
Сборка 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 :)

lly
24-08-2009, 15:52
Но мне показалось что использовать ./configure для крупных пакетов непосредственно в этом файле не совсем удобно. Поэтому здесь я запускал ./configure только для lzo который не требовал особых переменных окружения и параметров сборки. Все остальные проги я конфигал в другом мейкфайле - ~/asus/broadcom/src/gateway/Makefile и тут же происходит непосредственно компиляция исходников.
Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех configure в gateway/Makefile) идём.

Все это писалось на коленке и "под себя" поэтому "костылей" пока что много. Хотелось бы таким образом портировать с optware значительную часть софта и простым указанием в ~/asus/broadcom/src/gateway/.config необходимых пакетов собирать прошивку именно с тем софтом который нужен. Вот для доведения этой работы до ума, прошу народ откликнуться. В особенности хотелось бы услышать комментарии theMIROn :)
Я не theMIROn ;), но думаю, что проделанная работа, а в особенности опубликованное руководство, будут полезны очень многим :)
Теоретически, приделать механизм сборки пакетов из optware, возможно, но у нас пока хватает более приоритетных задач. Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.

P.S. Также неплохая система с пакетами и их автоматическим скачиванием реализована в OpenWRT

dvg_lab
24-08-2009, 16:23
Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех 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 файлами лично для меня более предпочтителен, да и более удобен в повседневном обращении.


Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.
обеими руками за.

dvg_lab
24-08-2009, 17:49
во первых спасибо за мануал, полезно держать такие how-to в одном месте.
Надеюсь пригодится.



Отдельный бранч, почему бы и нет. Можно обдумать.
Мне тоже кажется это хорошая идея, можно отдельно не мешая основной ветке пытаться собрать все части вместе.



угу, в этом случае более четкие зависимости выстроятся и не нужно будет прыгать через голову с опциями библиотек.
в том то и дело что либы от тулчейна из optware на самом деле не нужны.



Второй пусть a-la optware с мелкими mk файлами лично для меня более предпочтителен, да и более удобен в повседневном обращении.

ок, тогда я попробую обмозговать и переработать в отдельные мелкие файлы, идеологически это правильнее, нужно только разобраться каким образом идет обход целей при сборке прошивки в trx файл. Я так понимаю что именно -install цели и используются.



обеими руками за.
хорошо, я только надеюсь что вы с lly и всеми остальными мне поможете. Я собсно далеко не гуру в этих делах, но есть желание довести это до ума :)

dvg_lab
26-08-2009, 16:12
Решил пойти немного по другому пути, дабы не перелопачивать каждый 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.

lly
26-08-2009, 18:09
Решил пойти немного по другому пути, дабы не перелопачивать каждый 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

dvg_lab
26-08-2009, 20:30
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 с двумя зависимостями уже собирается, останется причесать и интегрировать в ваш проект.

dvg_lab
02-09-2009, 16:49
После многочисленных переделок и переработок в итоге получилось следующее. Процедура сборки прошивки 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 пока что еще запутан и наверняка содержит ошибки, но у меня работает.

lly
03-09-2009, 11:09
Сразу скажу, что еще сам не успел попробовать, а замечания чисто умозрительные.


Редактируем 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

dvg_lab
03-09-2009, 16:39
Для сего предлагаю добавить переменные основного .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 мож картина сразу прояснится.

lly
04-09-2009, 09:45
А вот тут не догнал, что за С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)

dvg_lab
07-09-2009, 11:38
В src/gateway работает стандартная команда
make menuconfig
менюшки для этого нарисованы в config/Config
ааа, то что отрабатывает по make config, я даже не знал и не замечал :)



Вот только долечим срочно ядерный l2tp и займемся.

ну как раз тут мне еще optware нужно допилить, пока что еще много косяков, попробовал собрать nano - не собрался, нужно фактически все переменные из мэйкфайлов от optware перетаскивать, и так чтобы не пересекались со всем остальным. Вобщем пока как раз покручу...



Я бы добавил инсталляцию optware в packages-% через make -C $(CONFIG_OPTWARE_PATH) install

ну в принципе инсталляцию можно и туда запихать



IMHO второе (make)
ок, я думаю это действительно правильнее.

mitnick
27-02-2010, 01:19
после прочтения темы ощущение того что топикстартер увлекся теоретическим исследованием, а потом забил на него...

всем было бы проще если бы в 1ый пост добавили КОНКРЕТНУЮ инфу - работает до конца метод по интеграции софта из optware в firmware или нет ?

тема нужная, полезная, вот только довести бы ее до логического завершения

целый топик рассуждений, что работает\что как можно когда-нибудь сделать, и без выводов\результатов, получилось ли

al37919
27-02-2010, 09:33
результаты именно такие, какие есть. Либо топикпастер решил вопрос для себя и забыл опубликовать решение, тем более, что интерес у него был профессиональный, либо забил на проблему.

Так что резюмируя --- сделать можно, но пока никем не сделано и не изложено. В первый пост выносить пока нечего.

dvg_lab
27-02-2010, 16:53
Топик стартер реализовал все что нужно было для проекта и ввиду отсутствия интереса у народа малость подзабил на форум. Короче говоря сейчас у меня все работает по последнему описанию (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 месяца вряд ли будет время этим заниматься.


Если есть какие-то вопросы по сборке всегда рад помочь, задавайте.

dvg_lab
17-04-2011, 17:22
Я тут обновил первый пост, для удобвства. Система сборки optware-d немного переработана, проверена на релизах r.2624 для d и для rtn r2861.

AlexeyS
21-04-2011, 13:20
Я тут обновил первый пост, для удобвства. Система сборки 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)

AlexeyS
22-04-2011, 22:07
Подправил ошибку при сборке 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)