Discuta este tópico no fórum

Se este conteúdo te ajudou, deixe um presente!

domingo, 12 de março de 2017

OpenWRT/LEDE: Compilando a partir dos fontes

Mais um artigo da série OpenWRT/LEDE.

Dificilmente alguém vai precisar compilar o seu sistema operacional. Isto se aplica também aos ambientes embarcados. O OpenWRT/LEDE fornece o acréscimo de programas por pacotes, a personalização dos pacotes de uma firmware, ou mesmo um ambiente de desenvolvimento para compilar pacotes individuais. Tudo isso evita em muito a necessidade de recompilar todo o ambiente. Todavia, às vezes é inevitável.

Sempre que a mudança não é em "um pacote", vai precisar recompilar a árvore. Mudança de um parâmetro do kernel? Parâmetro do gerenciador de boot? Alguma outra coisa? Pode se preparar para recompilar tudo. E tudo é bastante coisa. O ambiente não só recompila o que vai no roteador mas compiladores, ligadores, ferramentas de geração de firmware, sistema de arquivos, etc. Tudo para ser o mais independente possível do sistema operacional onde está sendo compilado.

Como eu começo? Primeiro precisa de algumas ferramentas básicas, como o git, o gcc (para compilar o gcc do OpenWRT/LEDE, o make e algumas bibliotecas de desenvolvimento para compilar o menuconfig. Já existem algumas linhas de comando prontas para instalar estes requisitos no site do LEDE. Vale a olhada. Depois, só baixar os fontes. Vou pegar o atual ramo estável do LEDE:
git clone --branch lede-17.01 https://github.com/lede-project/source.git
E depois configurar o ambiente:
make menuconfig
No menuconfig, você pode configurar todo seu ambiente. Normalmente você terá que configurar, ao menos, o alvo (target) e, preferencialmente, o modelo do roteador (por padrão, ele gera firmware para todos!). Este é o local para adicionar os pacotes. A simbologia é:
  • [*] significa que o pacote estará na firmware gerada ou uma opção foi selecionada;
  • [M] significa que o pacote será gerado (ipk) mas não estará na firmware;
  • [ ] significa que o pacote não será compilado ou opção não selecionada.
Saindo e salvando, basta compilar:
make
Ou, se tiver processadores sobrando, deixar o make usar diversos processadores:
make -j9
Não achei no menu um pacote! Busque apertando "/" no menuconfig. Ainda não o Luci! A maioria dos pacotes estão nos feeds adicionais, por padrão sem pacotes incluídos. Para incluir o "meu-pacote-querido":
./scripts/feeds update
./scripts/feeds install meu-pacote-querido
E ele aparecerá no menu (previamente ainda não selecionado).

Ao terminar o processo do make, sua firmware estará em:
  • bin/targets/<alvo configurado>/generic/
Os pacotes estarão em:
  • bin/targets/<alvo configurado>/generic/packages/ (para os específicos deste alvo)
  • bin/packages/<arquitetura>/luci (para pacotes da arquitetura que o <alvo configurado> pertence)
Você está pronto para se divertir. Só gravar a nova firmware ou copiar e instalar os novos pacotes.

Quer mudar algo depois? Mexer em um pacote? As receitas estarão em packages ou em feeds. Se mudar um pacote, como o sane-backends, pode recompilá-lo individualmente:
make package/meu-pacote-querido/compile
Ou rodar simplesmente o make geral e deixar ele encontrar o que falta fazer (vai demorar mais). Se tiver problemas, pode mostrar as informações da compilação:
make package/meu-pacote-querido/compile V=s
É isso pessoal. Espero que esta informação ajude nos primeiros passos de desenvolvimento do OpenWRT/LEDE. Quem sabe não ajude a revelar um novo desenvolvedor para o projeto?

Happy hacking!

Nenhum comentário:

Postar um comentário