Results 1 to 15 of 23

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

Hybrid View

Previous Post Previous Post   Next Post Next Post
  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 16: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 14: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

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, 06:15
  2. Replies: 4
    Last Post: 17-10-2008, 19:18
  3. Replies: 3
    Last Post: 05-02-2008, 08: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
  •