Page 1 of 2 12 LastLast
Results 1 to 15 of 23

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

  1. #1

    интеграция софта из optware в прошивку 10-d и rtn

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

    Сборку прошивки начинаем как описано в доке. После того как сделали svn checkout в файл Makefile.top добавяем строчку
    Code:
    include ../optware-d/.config
    сразу после первого include.
    Прицепленный архив сохранить в /whatever-you-want/broadcom/src/
    далее
    Code:
    tar -zxvf optware-d.tgz
    Далее как по доке
    Code:
    cd /whatever-you-want/broadcom/src/1.9.2.7-d
    make kernel
    make
    после этого следуя все той же доке перейти в папку gateway и также по доке дать команду make, теперь настало время для сборки optware-d
    в файле optware-d/.config отметить какие именно пакеты нужны для сборки и после этого
    Code:
    cd ../optware-d
    make checkout
    make
    make install
    Ну и сборка trx
    Code:
    cd ../gateway
    make install
    ========

    Как это работает:
    В optware-d/make.inst находятся mk файлы с переопределением целей install: в принципе там можно переопределить любую цель, но чаще всего приходится переопределять именно install, так как файлы инсталлятся вместо /opt в /usr. Посмотрев на примеры все должно стать понятно. Переопределение цели install требуется в том случае ели универсальная цель install которая находится в Makefile не сработала. Не весь софт имеет собственную цель install-strip в своих мэйкфайлах.

    PS: В данный момент количество роутеров в подчинении у меня достигло практически 240 штук, в разработке находится система управления всем этим чудо набором. Централизованная система администрирования, обновления и мониторинга. Если кому интересно поучаствовать в разработке пишите.
    Attached Files Attached Files
    Last edited by dvg_lab; 17-04-2011 at 17:18.

  2. #2

  3. #3
    openvpn помоему можно без зжатия юзать, lzo чтобы не запихивать...
    wl-500gp + AGESTAR IUBCP + HDD Seagete 80 GB = 1.9.2.7-10 + lighttp + perl + sqlite2 + php + ados + rtorrent + Kaspersky update + squid(–enable-delay-pools) + rrd + smb + ntp + ftp + half-dynamic shaping...

  4. #4
    Quote Originally Posted by 2bars View Post
    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, можно добиться полной управляемости вплоть до перепрошивки роутера с сервера.

  5. #5
    Сборка customized прошивки с компонентами из optware

    За основу взяты следующие компоненты:



    Для начала необходимо подготовить систему для сборки прошивки, я устанавливаю убунту в VirtualBox и необходимые пакеты следуя указаниям на http://code.google.com/p/wl500g/wiki...CustomFirmware

    Code:
    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 который все распаковывает и подготавливает для сборки

    Code:
    #!/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

    Code:
    export PATH=$PATH:/opt/brcm/hndtools-mipsel-uclibc/bin
    На этом этапе у нас все готово для оригинальной 10-d сборки. Подготавливаем optware для сборки пакетов под платформу oleg.

    Code:
    cd ~/asus/optware
    make oleg-target
    Теперь нужно выкачать нужные нам исходники пакетов для интеграции в систему сборки firmware, в то время как патчи к сырцам у нас уже лежат в ~/asus/optware/sources

    Code:
    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

    Code:
    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

    Теперь можно можно приступать к сборке:

    Code:
    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 указываем следующие опции

    Code:
    CONFIG_LZO=y
    CONFIG_OPENSSL=y
    CONFIG_OPENVPN=y
    CONFIG_NETSNMP=y
    Тут же можно закомментить пакеты которые не нужны в итоговой прошивке. Я лично убрал следующие:

    Code:
    upnp
    jpeg6b
    rcamd
    lprng
    bpalogin
    waveserver
    jetdirect
    samba
    nfsd
    nfs
    snmp
    igmpproxy
    scsiidle
    Для подкладывания уже собранных бинарников, таких как например tcpdump, делаем следующее:

    Code:
    mkdir ~/asus/broadcon/src/router/Addon
    cp tcpdump ~/asus/broadcon/src/router/Addon
    Makefile который собирает прошивку сам заберет оттуда файлики и положит в прошивку в /usr/sbin

    последний штрих
    Code:
    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:

    Code:
    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
    Attached Files Attached Files
    Last edited by dvg_lab; 24-08-2009 at 15:36.

  6. #6
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by dvg_lab View Post
    Но мне показалось что использовать ./configure для крупных пакетов непосредственно в этом файле не совсем удобно. Поэтому здесь я запускал ./configure только для lzo который не требовал особых переменных окружения и параметров сборки. Все остальные проги я конфигал в другом мейкфайле - ~/asus/broadcom/src/gateway/Makefile и тут же происходит непосредственно компиляция исходников.
    Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех configure в gateway/Makefile) идём.
    Все это писалось на коленке и "под себя" поэтому "костылей" пока что много. Хотелось бы таким образом портировать с optware значительную часть софта и простым указанием в ~/asus/broadcom/src/gateway/.config необходимых пакетов собирать прошивку именно с тем софтом который нужен. Вот для доведения этой работы до ума, прошу народ откликнуться. В особенности хотелось бы услышать комментарии theMIROn
    Я не theMIROn , но думаю, что проделанная работа, а в особенности опубликованное руководство, будут полезны очень многим
    Теоретически, приделать механизм сборки пакетов из optware, возможно, но у нас пока хватает более приоритетных задач. Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.

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

  7. #7
    Quote Originally Posted by lly View Post
    Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех configure в gateway/Makefile) идём.
    Я честно говоря изначально размышлял об отдельном проекте на code.google.com, как раз дабы не мешать разрабатываемой вами d версии, но если удастся все это интегрировать в одно место, то получится еще лучше конечно. Правда пока особых мыслей по этому поводу нет...

    Quote Originally Posted by lly View Post
    Я не theMIROn , но думаю, что проделанная работа, а в особенности опубликованное руководство, будут полезны очень многим
    Теоретически, приделать механизм сборки пакетов из optware, возможно, но у нас пока хватает более приоритетных задач. Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.
    Твое мнение для меня тоже важно. Вообще вы, молодцы, проделали огромную работу и отдельное спасибо за то что выложили свой труд на code.google.com. Я обмозгую каким образом можно интегрировать это все в ваш проект.

    Quote Originally Posted by lly View Post
    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 и оттуда уже юзер будет копировать куда надо и там править.

  8. #8
    во первых спасибо за мануал, полезно держать такие how-to в одном месте.

    Quote Originally Posted by dvg_lab View Post
    Я честно говоря изначально размышлял об отдельном проекте на code.google.com, как раз дабы не мешать разрабатываемой вами d версии, но если удастся все это интегрировать в одно место, то получится еще лучше конечно. Правда пока особых мыслей по этому поводу нет...
    Отдельный бранч, почему бы и нет. Можно обдумать.

    Quote Originally Posted by lly View Post
    Такая система досталось в наследство от Олега, а резких изменений "за компанию" делать не хотелось. А в принципе, мы к этому (переносу всех configure в gateway/Makefile) идём.
    угу, в этом случае более четкие зависимости выстроятся и не нужно будет прыгать через голову с опциями библиотек.

    Quote Originally Posted by dvg_lab View Post
    Мне видится пока два пути, либо делать отдельный Makefile и на каком-то этапе его запускать, например после сборки ядра и распаковки всех исходников пакетов, либо сделать пару include в обоих мэйкфайлах и уже в них непосредственно добавлять сборку дополнительного вареза... Надо обмозговать.
    Второй пусть a-la optware с мелкими mk файлами лично для меня более предпочтителен, да и более удобен в повседневном обращении.

    Quote Originally Posted by lly View Post
    Если ты сделаешь этот кусок, и он не будет конфликтовать с основными пакетами, то мы вставим его в проект.
    обеими руками за.

  9. #9
    Quote Originally Posted by theMIROn View Post
    во первых спасибо за мануал, полезно держать такие how-to в одном месте.
    Надеюсь пригодится.

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

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

    Quote Originally Posted by theMIROn View Post
    Второй пусть a-la optware с мелкими mk файлами лично для меня более предпочтителен, да и более удобен в повседневном обращении.
    ок, тогда я попробую обмозговать и переработать в отдельные мелкие файлы, идеологически это правильнее, нужно только разобраться каким образом идет обход целей при сборке прошивки в trx файл. Я так понимаю что именно -install цели и используются.

    Quote Originally Posted by theMIROn View Post
    обеими руками за.
    хорошо, я только надеюсь что вы с lly и всеми остальными мне поможете. Я собсно далеко не гуру в этих делах, но есть желание довести это до ума

  10. #10
    Решил пойти немного по другому пути, дабы не перелопачивать каждый 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.

  11. #11
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Quote Originally Posted by dvg_lab View Post
    Решил пойти немного по другому пути, дабы не перелопачивать каждый mk файл из состава optware, переписать главный Makefile от optware таким образом чтобы можно было легко интегрировать его в сборку 10-d. То есть mk файлы остаются от optware, а главный Makefile собирает бинарники, со всеми stage целями, так как от зависимостей по любому никуда не деться и по цели install складывает бинари туда же куда и Makefile собирающий прошивку - gateway/mipsel-uclibc/target/install, потом в итоге все само попадет куда надо.
    IMHO правильный вариант.
    Можно будет еще автоматизировать процесс, при выставлении CONFIG_OPTWARE=y в .config прошивки, автоматом вызывать в нужных местах
    Code:
    make -C $OPTWARE_DIR
    make -C $OPTWARE_DIR install

  12. #12
    Quote Originally Posted by lly View Post
    IMHO правильный вариант.
    Можно будет еще автоматизировать процесс, при выставлении CONFIG_OPTWARE=y в .config прошивки, автоматом вызывать в нужных местах
    Code:
    make -C $OPTWARE_DIR
    make -C $OPTWARE_DIR install
    В приципе да, я только одного не учёл в mk файлах optware нету целей install что логично, есть цели сборки ipk но они нам в принципе не нужны. Я думаю придется сделать единую цель %-install для всех пакетов, а там где необходимо - оверрайдить на конкретные pkg-install цели, которые уже придется писать вручную, но это все равно гораздо меньший труд нежели перелопачивать весь mk файл. А так можно в отдельных файликах наделать оверрайдовые install цели и мешать не будут и в принципе будет нормально.
    Тем более что с /etc все равно нужно что-то делать. Вобщем костяк уже готов, проверил esmtp с двумя зависимостями уже собирается, останется причесать и интегрировать в ваш проект.

  13. #13
    После многочисленных переделок и переработок в итоге получилось следующее. Процедура сборки прошивки 1.9.2.7-d меняется следующим образом:

    сборка производится в соответствии с документом http://code.google.com/p/wl500g/wiki...CustomFirmware вплоть до пункта 4.3, пункт 4.3 соответственно изменяется на следующий:

    Code:
    $ cd /whatever-you-want/broadcom/src/gateway
    Редактируем Makefile и добавляем туда следующую строку

    Code:
    include ../optware-d/.config
    сразу после строки

    Code:
    include .config
    После этого скачиваем модифицированный optware и устанавливаем его для сборки

    Code:
    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, добавляя или удаляя по аналогии софт, который нужно установить. После этого можно начинать сборку.

    Code:
    cd /whatever-you-want/broadcom/src/gateway
    make
    По команде

    Code:
    cd /whatever-you-want/broadcom/src/optware-d
    make checkout
    скачиваются две директории make и sources из репозитария optware. Теперь можно собирать и ставить, тут же выполняем

    Code:
    make
    make install
    Ну и сборка trx файла

    Code:
    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 пока что еще запутан и наверняка содержит ошибки, но у меня работает.

  14. #14
    Join Date
    Nov 2006
    Location
    Russia, Moscow
    Posts
    3,640
    Сразу скажу, что еще сам не успел попробовать, а замечания чисто умозрительные.
    Quote Originally Posted by dvg_lab View Post
    Редактируем Makefile и добавляем туда следующую строку

    Code:
    include ../optware-d/.config
    сразу после строки

    Code:
    include .config
    Для сего предлагаю добавить переменные основного .config'а:
    PHP Code:
    CONFIG_OPTWAREy|n
    CONFIG_OPTWARE_PATH
    = ../optware-d по умолчанию 
    ну, и соотвественно, добавить нужные строчки в Config.in для менюшек
    После этого скачиваем модифицированный optware и устанавливаем его для сборки

    Code:
    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, добавляя или удаляя по аналогии софт, который нужно установить. После этого можно начинать сборку.

    Code:
    cd /whatever-you-want/broadcom/src/gateway
    make
    По команде

    Code:
    cd /whatever-you-want/broadcom/src/optware-d
    make checkout
    скачиваются две директории make и sources из репозитария optware.
    Вот здесь, если можно, поподробнее. В моём представлении весь download optware, кроме исходников самих пакетов, должен пройти по "svn co". Или речь об копировании собранных пакетов в src/gateway/mipsel-uclibc?

    Если можешь, посмотри куда лучше запихнуть вызовы сборки optware, закрытые
    PHP Code:
    ifneq ($(CONFIG_OPTWARE),)
    endif 

  15. #15
    Quote Originally Posted by lly View Post
    Для сего предлагаю добавить переменные основного .config'а:
    PHP Code:
    CONFIG_OPTWAREy|n
    CONFIG_OPTWARE_PATH
    = ../optware-d по умолчанию 
    С этим согласен, можно в ваш .config запихать.

    Quote Originally Posted by lly View Post
    ну, и соотвественно, добавить нужные строчки в Config.in для менюшек
    А вот тут не догнал, что за Сonfig.in для менюшек?

    Quote Originally Posted by lly View Post
    Вот здесь, если можно, поподробнее. В моём представлении весь download optware, кроме исходников самих пакетов, должен пройти по "svn co". Или речь об копировании собранных пакетов в src/gateway/mipsel-uclibc?
    по make checkout происходит следующее
    Code:
            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, ато я мож там намудрил чего лишнего.

    Quote Originally Posted by lly View Post
    Если можешь, посмотри куда лучше запихнуть вызовы сборки optware, закрытые
    PHP Code:
    ifneq ($(CONFIG_OPTWARE),)
    endif 
    Что касается broadcom/src/gateway/Makefile который собирает бинари и trx то там есть небольшая засада, цель package-%: которая собирает сам trx файл из структуры директорий broadcom/src/gateway/mipsel-uclibc/target имеет в себе одну не очень приятную команду в самом начале
    Code:
            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 мож картина сразу прояснится.

Page 1 of 2 12 LastLast

Similar Threads

  1. Donations needed to continue Optware packages service
    By bzhou in forum WL-500g Custom Development
    Replies: 1
    Last Post: 18-12-2008, 07:15
  2. Replies: 4
    Last Post: 17-10-2008, 20:18
  3. Replies: 3
    Last Post: 05-02-2008, 09:59

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •