Instituto Federal do Ceará Essas apresentação possui um acumulado de informações de mais de 9 meses de pesquisa e desenvolvimento em redes mesh utilizando o firmware Openwrt. OpenWrt: modelagem do 1 código Nas profundezas do kernel do Linux...
2 Uma abordagem: Top-Down Introdução Sabemos que sistemas embarcados são desenvolvidos para uma tarefa específica. O software escrito para sistemas embarcados é muitas vezes chamado firmware, e armazenado em uma memória ROM ou memória flash ao invés de um disco rígido. Para esse projeto utilizamos roteadores da TP-LINK que são de baixo custo e possui um firmware fechado embarcado.
3 Conhecendo nossos dispositivos... Roteador: TP-LINK WR842ND Firmware: TP-LINK
4 Conhecendo nossos dispositivos... Antena USB: TL-WN721N
5 Especificações do roteador... Interface: 4 Portas LAN 10/100Mbps 1 Porta WAN 10/100Mbps 1 Porta USB 2.0 Antena 2 antenas externas destacáveis de 5 dbi (RP-SMA) Padrões Wireless IEEE 802.11n, IEEE 802.11g, IEEE 802.11b Arquitetura MIPS 74Kc V4.12 CPU Speed Flash size RAM size System-On-Chip RAM chip 535 MHz 8 MiB 32 MiB Atheros AR9341 Winbond W9425G6JH-5
6 Agora temos um problema... Como falado antes o firmware embarcado nos roteadores da TP-Link é fechado e bastante limitado tornando não muito é interessante para nosso projeto. Precisamos estar livres para realizar nossas configurações e modificações dos protocolos de rede. Então precisamos de um firmware que nos de essa liberdade. A solução para o nosso problema foi o nosso querido OpenWrt. Um firmware para dispositivos embarcados baseado em Linux. Ele nos deu poder total em modificação, distribuição e suporte.
7 Conheçam o LUCI... Interface gráfica do OpenWrt: LuCi
8 Funcionou! E agora? E agora vamos começar nossa jornada e mergulhar a fundo no OpenWrt Já parou para pensar como tudo isso funciona? Para responder essa pergunta é preciso entender como foi projetado o OpenWrt.
9 Hardware x Software Para que o hardware e o software se entendam é necessário que a haja uma ponte entre eles. E essa ponte é chamada de kernel.
10 Kernel... O que é um kernel? O núcleo é o componente central do sistema operativo ele serve de ponte entre aplicativos e o processamento real de dados feito a nível de hardware.
11 Temos outro problema... Como vimos anteriormente um firmware embarcado é feito para um hardware especifico. E como vimos nas especificações dos nossos roteadores podemos notar claramente que ele não possui recursos suficiente para uma compilação de todo o firmware. Como o OpenWrt consegue a proeza rodar em vários dispositivos diferentes? A resposta para esse pergunta é utilizando um compilador cruzado.
12 Compilador cruzado Com o compilador cruzado é capaz de produzir código executável em uma plataforma diferente da qual o compilador está sendo executado. Esses compiladores são usados para compilar para uma plataforma que não pode sustentar satisfatoriamente uma compilação. Sendo assim, é possível compilar o mesmo código fonte e rodar e vários dispositivos desde que se tenha o compilador daquela plataforma especifica.
13 Obtendo o código fonte...
14 Estrutura de diretórios...
15 Principais diretórios... bin/: Aqui temos os arquivos binários pronto para instalar nos dispositivos build_dir/: O diretório de criação e compilação. docs/: Documentação geral do openwrt. package/: Pacotes complementares. target/: Os compiladores para cada dispositivo.
16 OpenWrt build... Para ter acesso ao código fonte é necessário construi-lo. Para construir o código fonte precisamos resolver suas dependências.
17 Make Menuconfig... E interface de configuração do sistema de compilação OpenWrt que lida com a seleção da plataforma de destino, pacotes para ser compilado, pacotes a serem incluídos no arquivo do firmware, algumas opções de configuração do kernel, etc. Para iniciar a interface de configuração do OpenWrt, basta emitir o seguinte comando:
18 Menuconfig Interface...
19 Building Images Agora vamos construir finalmente a imagem do sistema. Para isso basta emitir o seguinte comando:
20 Agora vai...
21 olhando os diretórios construídos... Target: Código e Objeto Toolchair: Conjunto de ferramentas(código e Compilador)
22 Abrindo o diretório Target... Kernel, scripts de gerenciamento, bibliotecas, gerenciador de boot
23 Acessando o kernel... Módulos base: O que estamos interessados mesmo é no modulo wireless
24 Acessando Wireless/Net/mac80211 Modulo mac80211s: código fonte de implementação das redes mesh e hwmp.
25
26
27
28
29
30
31
32
33
34
35
36
37 Trabalho Futuro... Teste de distancia e números de saltos...
38 Duvidas?
39 Obrigado!