Acelerando o Build de Yocto com ajuda da Nuvem

Serviços de nuvem – a tal da cloud – já são uma realidade há alguns anos. O grande nome do momento ligado ao assunto é Internet das Coisas, também conhecido como IoT ou Internet of Things. Geralmente quando nós, da eletrônica, pensamos em nuvem, a primeira coisa que vem à nossa cabeça é ligar diversos dispositivos eletrônicos a ela e enviar os dados para serem visualizados, armazenados e analisados – e muitas outras possibilidades.

 

O que costumamos não perceber é que a nuvem pode ser muito mais do que uma ferramenta de IoT ou algo que somente grandes empresas têm acesso. É possível beneficiar-se da nuvem para tarefas do dia a dia. E esta foi a motivação para escrever o artigo – pegar uma tarefa demorada e usar a nuvem para facilitar a nossa vida!

 

Como já tenho certa familiaridade com a plataforma Azure, que é a nuvem da Microsoft, vou mostrar como provisionar uma máquina virtual Ubuntu Server 16.04 LTS (sim, máquina Linux na cloud da Microsoft!) no Azure e usar o Yocto/OpenEmbedded para gerar uma imagem de Linux Embarcado igual à imagem padrão disponibilizada para o computador em módulo Colibri iMX6 da Toradex. Vamos fazer então um build de Yocto na nuvem!

 

 

Cadastro no Azure

 

O primeiro passo é acessar portal.azure.com e registrar sua conta Microsoft ao Azure.

 

 

Criando a máquina virtual

 

Com isso, basta seguir este artigo de documentação do Azure para criar rapidamente sua máquina virtual.

 

Dica 1: no terminal do seu computador, após gerar uma chave de autenticação com o comando abaixo:

 

 

Você vai precisar copiar a chave pública de autenticação. Basta copiar o conteúdo do arquivo “id_rsa.pub”. Execute o comando abaixo e copie a saída dele:

 

 

Dica 2: quando você acabar o passo “Connect to Virtual Machine”, pode parar. Não precisa instalar o NGINX como está descrito no artigo do Azure.

 

 

Fazendo build do Yocto

 

Com acesso à VM via ssh, é possível preparar o ambiente para fazer a build. Para isto, você pode seguir este artigo do site de desenvolvedor da Toradex.

 

Dica 1: o artigo é grande, mas você só precisa seguir as seções: “Prerequisites” - para Ubuntu 16.04; “Installation – Setup/Configure”; “Installation – local.conf” - para selecionar o Colibri iMX6; e “Building”.

 

Dica 2: quando a VM é iniciada, ela tem um disco (SSD) de 30GB onde fica instalado o sistema operacional. Há também um disco volátil na pasta /mnt, e o seu tamanho varia conforme a configuração de VM que você escolhe.

 

Nota: o disco de 30GB onde fica instalado o sistema operacional pode ter seu tamanho aumentado.

 

 

É rápido?

 

O teste foi realizado para a primeira build da imagem angstrom-lxde-image, o que inclui fazer o download e compilação de todos os pacotes, e baixar a imagem da nuvem para o computador de desenvolvimento.

 

Vou usar como base o notebook em que trabalho, que tem um desempenho razoável. Ele tem um Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz, com 8 núcleos virtuais (o processador tem 4 núcleos), 8GB de RAM e um disco SSD para fazer as builds. Começando uma build do zero, o tempo total da primeira build é de 4 horas.

 

Na Azure, foram provisionadas duas VMs: uma com a configuração mais simples possível (Standard DS1 v2), com 1 núcleo Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 3,5GB de RAM e disco SSD; a outra com a configuração mais potente disponível para a conta de Microsoft Partner, com 8 núcleos  Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 28GB de RAM e disco SSD. O tempo total da primeira build é de 12 horas para a configuração mais simples e 1 hora e 30 minutos para a mais potente.

 

Nota: há VMs mais potentes para outros tipos de conta.

 

Nota 2: o tempo de download da imagem compilada, da nuvem para o computador local, é muito pequeno (< 3 minutos) para uma taxa de download de cerca de 1MB/s.

 

Máquina

Tempo para o Build Completo

Custo por Hora

Custo Total

Máquina Local

Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz

4 horas

-

-

Azure Simples

1 Núcleo Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 3,5GB de RAM e disco SSD

12 horas

R$ 0,274/hora

R$ 3,29

Azure Top

8 Núcleos Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz, 28GB de RAM e disco SSD

1,5 Horas

R$ 2,19/hora

R$ 3,29

 

 

É barato?

 

A máquina virtual mais simples utilizada tem custo de R$0,274/hora, enquanto a máquina mais potente custa R$2,194/hora. Temos então o custo total da primeira build sendo aproximado em R$3,29 para ambas as configurações de máquina. A tabela de custos para todas as configurações pode ser encontrada nesta página do Azure.

 

Tenho à disposição uma conta do tipo “Microsoft Partner Network”, que dá direito a USD100,00 por mês, o que convertido para reais é equivalente a R$375,00 em créditos do Azure no momento em que este artigo foi escrito – mais do que suficiente para fazer todas as builds necessárias ao longo de um mês.

 

Dica: ao acabar de fazer uma build, é preciso desligar a VM para que os créditos não sejam mais consumidos. A ideia é pagar pelo uso e, por isso, também é preciso tomar cuidado para não esquecer uma VM ligada durante o fim de semana, por exemplo.

 

Dica 2: há funções de auto-desligamento da VM, assim você pode programar essa salvaguarda caso esqueça de desligar a VM manualmente.

 

Nota: os valores de hora apresentados no site da Microsoft não incluem impostos de transações internacionais, e taxas de câmbio podem variar. Também há o uso de outros serviços em conjunto com a VM, como atribuição de IP e armazenamento de dados.

 

 

Conclusão

 

Tendo em vista o tempo de build, que é muito rápido quando se escolhe uma VM turbinada, e seu custo/hora muito baixo, fica claro que o uso desta ferramenta não só é recomendado como pode trazer grande economia – ou maior eficiência para um funcionário/autônomo, já que as horas de trabalho economizadas custam muito mais do que as horas da VM. Dentre os benefícios também podemos considerar o fato de evitar o desgaste da máquina pessoal, continuar trabalhando em outras tarefas sem que a máquina pessoal fique lenta e também o fato de poder fazer diversas builds ao mesmo tempo, sem restrições de hardware.

 

Com as dicas e o estudo de caso montados neste artigo, espero que as informações apresentadas tenham sido úteis. Até a próxima!

NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

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

2
Deixe um comentário

avatar
 
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Leonardo VeigaGiovanni Bauermeister Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Giovanni Bauermeister
Visitante
Giovanni Bauermeister

Muito legal a dica Léo.
Da pra agilizar bastante o processo.
Uma vez fiz um build de yocto numa VM da Google, se não me engano tinha 16 cores e deu em torno de 30 min o build.

Leonardo Veiga
Visitante
Leonardo Graboski Veiga

O negócio é bruto mesmo! Queria poder provisionar uma com mais núcleos também :p