1 Comentário

Replicação de ambientes de desenvolvimento com Rebuild

Não é raro na carreira de desenvolvedor de software embarcado, deparar-se com situações em que é necessário ter mais de um ambiente de desenvolvimento. Ou ainda, necessitar de um ambiente que de compilação que o fabricante do processador instruiu usar uma distribuição Linux mais antiga ou diferente da instalada na máquina de desenvolvimento. Foi por enfrentar esses problemas, dentre outros, que a ferramenta rebuild foi criada.

O rebuild, ou simplesmente rbld, é uma aplicação de terminal que permite o desenvolvedor (não exclusivamente de sistemas embarcados) criar ambientes de desenvolvimento, com toolchain, bibliotecas e aplicações isoladas do ambiente de trabalho. Esse isolamento provê a possibilidade de criação de diversos ambientes em uma única máquina, e ainda, compartilhá-los, de forma que dentro de um time, todos os membros tenham a mesma configuração de ambiente.

Mas como o rbld consegue realizar isso? O rbld funciona sobre o Docker, que é uma ferramenta que permite criar e gerenciar “conteiners” Linux, que são como distribuições completas dentro ambientes isolados (algo semelhante ao “chroot”, mas com recursos mais avançados). No caso o rbld abstrai o uso do Docker, permitindo que seja possível criar containers para desenvolvimento, mesmo sem saber como utilizar o Docker.

Hands-on

Para exemplificar o uso do rbld, vamos compilar uma imagem da versão 15.05 (Chaos Calmer) do OpenWRT. Essa versão não pode ser compilada por versões mais atuais do GCC, o que pode ser um problema para quem usa distribuições do tipo Rolling Release ou as últimas versões do Ubuntu ou Fedora.

Este exemplo utiliza o Linux Mint 18 – adapte os comandos abaixo aos gerenciadores de pacote (se enfrentar alguma dificuldade, peça ajuda pelos comentários)

Primeiramente, é necessário instalar algumas aplicações como o interpretador Ruby (uma vez que rbld é escrito nessa linguagem), o gerenciador de pacotes Gem, e por fim, o Docker.

Para que seja possível rodar o rbld sem permissões de super usuário (sudo), basta adicionar o usuário que pretende utilizá-lo ao gropo ‘docker’.

Agora, basta instalar o rebuild usando o Gem:

Criando um environment

A primeira coisa a se fazer é criar um ambiente. Como dito anteriormente, o ambiente nada mais é que um container do Docker. A vantagem de usar o rbdl é que tudo que envolve o docker fica transparente para o desenvolvedor, evitando ter que aprender mais uma ferramenta.

Para criar um ambiente utiliza-se o comando ‘create’, cuja sintaxe é:

A opção ‘base’ é usada para especificar a distribuição (é possível especificar inclusive a versão) que se deseja utilizar. Por exemplo, a versão 15.03 (Chaos Calmer) do OpenWRT exige uma versão X do gcc, disponível no Ubuntu 14.04. Versões mais novas do gcc simplesmente não compilam essa versão do OpenWRT.

Para inciar um ambiente para o OpenrWRT 15.03, rode

Se tudo der certo, no final do que é mostrado na tela, deve-se ler: “Successfully created openwrt:initial

O sistema base não inclui as ferramentas de desenvolvimento (toolchain, bibliotecas, headers dakernel, etc.). Precisamos, então, modificar o ambiente base para incluir as ferramentas necessárias. O processo de instalar as ferramentas necessárias no ambiente é chamado provisionamento, que é realizado pelo  comando modify:

No caso do ambiente para o OpenrWRT, precisamos instalar uma série de pacotes, que o faremos pelo apt-get no ambiente:

Para encerrar o provisionamento, devemos “comitar” as mudanças realizadas.

O parâmetro “tag” permite colocar “apelidos” nas versões de um mesmo ambiente. Por exemplo, “v001” para primeira versão, ou “com-libssl” para uma versão hipotética que inclua a libssl.

Dando continuidade ao exemplo do OpenWRT, comite as mudanças realizadas anteriormente:

Com o ambiente criado e provisionado, realize um teste com o comando run:

O comando “run” executa comandos no container (ambiente) capazes de interagir com o ambiente de máquina de desenvolvimento. Essa iteração ficará mais clara no passo seguinte, onde será realizado o “clone” do repositório do OpenWRT:

Deste ponto em diante, basta rodar os comandos para compilar o OpenWRT usando o rbld run openwrt — como prefixo,

Ao final, você deve ter uma imagem compilada em no diretório bin.

Um pouco mais sobre o gerenciamento de ambientes

Para ver os ambientes criados até o momento, utiliza-se o comando ‘list’:

O comando “rm” apaga versões (criadas com a opção “tag”) ou ambientes inteiros.

Por exemplo, para apagar a versão inicial do ambiente do tutorial,

É possível salvar um ambiente (comando “save”) e carregá-lo com outra máquina (comando “load”), ou mesmo publicar esses ambientes em um serviço chamado Registry (comando “publish”) – deixamos para o leitor mais interessado pesquisar na documentação como utilizar esses comandos e de que forma isso pode ser útil para seus projetos. 

Mais informações

Quem quiser conhecer mais sobre o projeto Rebuild, pode acessar a sua documentação em https://github.com/rbld/rebuild/wiki ou seguir o tutorial em inglês em https://medium.com/jumperiot/simplifying-iot-development-using-rebuild-71b8de2dea5f

Nota:

Este artigo contou com a colaboração de Tiago Medicci Serrano, a quem eu agradeço imensamente pela ajuda.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » Replicação de ambientes de desenvolvimento com Rebuild
Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Neuber Jose de Sousa Sousa
NEUBER JOSE DE SOUSA
19/09/2019 17:29

To c/ uma duvida aki pra fazer meu openwrt dir825 c1 virar wifi cliente

Talvez você goste:

Séries

Menu

WEBINAR
 
Porque o RTOS não faz o que eu quero?

Data: 28/10 às 19:30h - Apoio: Mouser Electronics
 
INSCREVA-SE AGORA »



 
close-link