Compilar firmware OpenWRT

Fonte: wirelesspt.net

Aqui é descrito como compilar de forma simples o firmware OpenWRT para versão backfire e trunk. (ver ainda Attitude Adjustment)

Existem 2 possibilidades: a versão estável Backfire ou a versão experimental Attitude Adjustment. Em relação ao protocolo batman-adv, verificou-se que a versão estável ainda não fora corrigida quanto a algumas funcionalidades existentes nesse protocolo, apresentando alguns erros impossíveis de resolver. No entanto a versão experimental revelou que as funcionalidades do protocolo batman-adv funcionam corretamente. Assim, e para compilação da imagem, procedeu-se da seguinte forma (instalação no sistema operativo linuxUbuntu 11.04):

  • 1. É preciso instalar os pacotes: gcc-multilib bison autoconf screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core

(conforme o sistema operativo, o comando a usar para a instalação está descrito adiante)

  • 2. Executa-se o seguinte comando:
svn co svn://svn.openwrt.org/openwrt/trunk/

Este comando vai criar um diretório chamado de "trunk", para onde vai ser copiado todo o download proveniente do repositório OpenWRT, que é necessário para compilar e criar a imagem final que irá correr no router.

Caso se pretenda a versão estável, deverá executar-se:

svn co svn://svn.openwrt.org/openwrt/branches/backfire
  • 3. Mudar para a diretoria criada: cd trunk

Caso seja a versão estável, mudar para:

cd backfire
  • 4. É necessário editar o ficheiro, onde é determinado que pacotes se pretendem incluir na compilação. É preciso permissões de root para poder editá-lo:
sudo gedit feeds.conf.default
src-svn packages svn://svn.openwrt.org/openwrt/packages 
#src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package 
src-svn luci http://svn.luci.subsignal.org/luci/trunk/contrib/package 
#src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone 
#src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl 
#src-svn xorg svn://svn.openwrt.org/openwrt/feeds/xorg 
#src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop 
#src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce 
#src-svn lxde svn://svn.openwrt.org/openwrt/feeds/lxde 
#src-link custom /usr/src/openwrt/custom-feed

Neste caso, só foram descomentados os pacotes base do OpenWRT na 1ª linha e o pacote para a interface gráfica na 3ª linha, todos as linhas que começarem por #, serão ignoradas.

  • 5. Atualizar todos os pacotes copiados para a diretoria (executar):
scripts/feeds update

ou

./scripts/feeds update

(conforme o sistema operativo)

  • 6. Instalar os pacotes que possam estar em falta e neste caso poderá ser pertinente fazê-lo para o pacote batman-adv, que ficará disponível para a compilação:
scripts/feeds install -a

ou

./scripts/feeds install -a

(conforme o sistema operativo)

  • 7. Instalar especificamente o módulo de batman-adv:
scripts/feeds install kmod-batman-adv

ou

./scripts/feeds install kmod-batman-adv

(conforme o sistema operativo)

  • 8. Iniciar a aplicação que permite selecionar os pacotes a incluir na compilação:
make menuconfig
  • 9. Depois de iniciada a aplicação, primeiro é preciso selecionar o tipo de chip onde vai correr a imagem:
Target System ---> Atheros AR7xxx/AR9xxx 
                   Atmel AT91 Atmel 
                   AVR32 Broadcom 
                   BCM2708/BCM2835 
                   Broadcom BCM2708/BCM2835 
                   Broadcom BCM947xx/953xx … … … 
                   etc…

Como foram usados routers linksys wrt54GS, foi escolhida a arquitetura Broadcom BCM947xx/953xx. De salientar que para o protocolo batman-adv, a ditribuição linux escolhida tem de ser superior ou igual a 2.6.

  • 10. Para seleção de Target Profile:
Target Profile ---> Broadcom BCM43xx WiFi (b43, default) 
                    Broadcom BCM43xx WiFi (wl, proprietary) 
                    Atheros WiFi (ath5k) 
                    No WiFi BCM4705/BCM4785, 
                    Broadcom BCM43xx WiFi (b43) 
                    BCM4705/BCM4785, no WiFi … … … 
                    etc…

Neste caso foi selecionado Broadcom BCM43xx WiFi (b43, default), que se encontra na 1ª linha. Cada router terá de ser estudado e verificado quanto aos seus componentes e arquiteturas, de maneira a escolher as opções que se lhe adequam.

  • 11. Devemos selecionar o tipo de imagem que queremos que seja criada. routerPara isso selecionamos
Target Images: ramdisk ---> 
                       --- Root filesystem archives 
                           cpio.gz tar.gz 
                       --- Root filesystem images 
                           ext4 
                           jffs2 
                           squashfs 
                       --- Image Options

Para o tipo de imagem a compilar, escolheu-se squashfs, que se trata de uma imagem comprimida para instalação no router.

  • 12. Este passo é opcional. Trata-se da instalação da componente gráfica. Este interface não é de todo necessário, uma vez que não possui a possibilidade de administração da rede mesh com batman-adv. A inclusão desta opção permite ter acesso a imensos dados do router, no entanto vai fazer com que a imagem final fique maior, o que para routers com pouca memória flash poderá condicionar o seu desempenho ou inviabilizar mesmo a instalação.
LuCI ---> 
    Collections --->  Luci-ssl Standard OpenWrt set with HTTPS support 
    Modules ---> 
            --- luci-mod-admin-core....... Web UI Core module 
            --- luci-mod-admin-full LuCI Administration - full-featured for full control

Foi selecionado a interface gráfica LUCI, com as coleções e módulos acima especificados.

  • 13. Para selecionarmos o módulo de batman-adv, de maneira a fazer parte da imagem final a instalar no router, deve-se proceder da seguinte forma:
Kernel modules ---> 
             Network Support ---> 
                           kmod-batman-adv 
                           enable bridge loop avoidance 
                           enable batctl

Depois de selecionado, carrega-se na tecla "escape" + "escape" (2 vezes), até que o sistema pergunte se se deseja gravar as configurações para a compilação. Seleciona-se “yes”.

  • 14. Compilar a imagem:
make j -5
  • 15. Esperar uma boa meia hora, dependendo da velocidade de processamento do computador e esperar que chegue ao fim.
  • 16. É criada uma pasta de nome "bin" dentro da diretoria trunk (ou OpenWRT, se for a versão estável), onde estarão as imagens e pacotes todos compilados. Escolhe-se a imagem para o “nossorouter e procede-se à instalação, esperando que funcione.

É possível instalar outros pacotes. Por exemplo, se se quiser incluir os pacotes X-WRT, ou snmp, ou EGGDROP, etc., é uma questão de acrescentá-los. Existem centenas de variações e programas que podem ser desde logo incluídos.

Autoria

Pedro Rodrigues

Links externos

Editor

--Cmsv (discussão) 19h04min de 23 de Abril de 2013 (GMT)