Desvendando Yocto Project (Poky) - Primeiros passos

poky

Introdução

Trabalhar com Linux embarcado pode ser uma tarefa tão complexa quando nos guiarmos em uma floresta. Este artigo tem o intuito orientar os primeiros passos de um projetistas em Linux embarcado ao trabalhar com Yocto Project (Poky) para construir distribuições Linux específicas para projetos de sistemas embarcados dedicados. Como ponto de partida para este artigo, tomarei como base o trabalho escrito pelo Henrique sobre BeagleBone Black e Yocto Project.

 

Para o correto aproveitamento deste projeto, é importante que ele seja lido logo depois do artigo anterior, realizado pelo Henrique.

Caso você tenha realizado os procedimentos de construção da imagem Linux durante a madrugada, foi dormir e desligou o computador, o procedimento abaixo descreve como voltar de onde parou.

Com estes comandos todas as variáveis de ambiente e os caminhos estão preparados para realização da compilação de novas funcionalidades para o projeto previamente gerado. 

 

Dicas para utilização do Yocto (Poky) em seu projeto

Incluir um novo pacote de software ao meu projeto

Quando se executa bitbake core-image-minimal no shell, a imagem final gerada para execução no target é realmente mínima. Pouco software está disponível na imagem final. Creio que o tamanho desta imagem é de aproximadamente 16 MB.

Para incluir um novo software, é preciso alterar o arquivo local.conf, usado previamente para a definição do hardware a ser usado no projeto. É preciso incluir mais informações à variável IMAGE_INSTALL presente na receita. Assim, adiciona-se a seguinte linha ao arquivo local.conf.

Esta linha pode ser adicionada em qualquer lugar do arquivo. O sufixo _append significa que a informação a seguir será adicionada logo depois do conteúdo atualmente existente nesta variável.

Neste exemplo, serão incluídos os pacotes OpenSSH, MtdUtils e NFS Utils em sua distribuição.

Este é o método mais simples e fácil para se incluir novos pacotes em uma imagem. Pela sua flexibilidade, o Yocto permite outras formas de incluir estes pacotes em uma imagem, como alterar a receita de uma imagem, criar um packagegroup ou mesmo criar uma nova receita de imagem a partir do zero. Em outros artigos trataremos destas outras abordagens.

Aqui vai uma dica: instale sempre o pacote RPM em sua distribuição POKY. Conforme você pode observar em uma leitura mais detalhada do arquivo local.conf, o Yocto cria pacotes RPM para construção da distribuição. Quando se deseja instalar novo software sem a necessidade de construção de uma nova imagem, esta ferramenta é bem útil.

Como saber quais são os pacotes disponíveis?

Em uma receita é possível definir diferentes tipos de pacotes. Essencialmente são derivações do mesmo pacote: com informações de debug,  com as bibliotecas de desenvolvimento, entre outros tipos.

No artigo do Henrique houve um momento onde se altera o arquivo bblayers.conf. Neste arquivo se encontra a lista de diretório contendo metadados e recipes nas quais o bitbake deve procurar (também chamados de camadas). A lista deve ser feita de forma hierárquica, onde as receitas são procuradas conforme a ordem presente nos arquivos.

Para saber quais são os recipes presentes na sua configuração, basta digitar o seguinte comando:

Como salvar os código fonte de software open source em um lugar diferente do diretório do projeto?

Uma atividade interessante para quem trabalha bastante com projetos de distribuições Linux é manter em um único lugar os pacotes de software usados nos projetos. Em sua maioria, eles são os mesmos. Então uma recurso interessante é tem localmente estes pacotes e reaproveitá-los em outros projetos.

Para isso, basta descomentar uma linha presente do arquivo local.conf:

Se for observado os comentários presentes no próprio arquivo, caso esta linha esteja comentada, será criado um diretório downloads no diretório raiz do projeto. Possivelmente este diretório já esteja presente em seu projeto. Basta trocar o conteúdo desta variável para um diretório fixo, específico para sua máquina.

Como alterar as configurações do meu kernel do projeto?

Para recompilar o kernel com suas configurações específicas, através de menuconfig, as seguintes instruções devem ser realizadas:

A primeira instrução limpa a configuração de compilação do pacote, sem apagar os fontes.

A segunda instrução chama o menuconfig com o arquivo de configuração padrão.

A terceira instrução recompila o kernel, com as novas configurações.

Ao final desta execução, teremos uma compilação de kernel atualizada. O próximo passo é atualizar o kernel da imagem. Para isso, existem duas estratégias. A primeira é gerar uma nova imagem e substituir a que se encontra atualmente em execução no sistema embarcado. A segunda estratégia é instalar os pacotes RPM correspondentes ao kernel, localizado em tmp/deploy/rpm/beaglebone/ e possui o nome kernel-<versão>-<sufixo>-<release>.beaglebone.rpm além de seus complementos (módulos, devicetree). Inicialmente recomenda-se a adoção da primeira estratégia.

Como compilar um único pacote?

Basta executar o seguinte comando:

Neste caso, openssh corresponde ao nome do pacote que se deseja compilar.

Notar que ele não será incorporado diretamente à imagem. Será criado seu pacote RPM no diretório tmp/deploy/rpm de seu diretório de projeto. Este arquivo pode ser transferido manualmente para sua distribuição em execução e instalado (de forma similar a uma distribuição Linux convencional). Caso este pacote se encontre na lista presente na variável IMAGE_INSTALL, então quando o comando para construção da imagem for executado, este pacote será incluído.

É possível gerar um pacote sem que ele seja instalado na imagem final. Trata-se de um importante recurso desta ferramenta. Caso o pacote possua dependências, estas dependências serão também compiladas e seus respectivos RPM serão gerados. O grande diferencial dos projetos Poky e OpenEmbedded está justamente na eficiência do tratamento de dependências.

Como baixar todos os arquivos antes de começar a compilar o projeto?

Basta executar o seguinte comando:

Neste caso, serão baixados os pacotes para a imagem core-image-minimal. Caso se esteja trabalhando outra imagem, ela deve ser mencionada no comando.

Como checar quais pacotes foram instalados?

Para checar quais foram os pacotes de software instalados em seu projeto, basta conferir o conteúdo do arquivo installed_packages.txt, localizado em tmp/work/beaglebone-poky-linux-gnueabi/core-image-minimal/1.0-r0/

Próximos passos

Em breve informações mais detalhadas sobre as características internas do Yocto, bem como casos de uso, serão apresentados no portal. 

Saiba mais

Embedded Linux Build Systems

Cozinhando com o Yocto Project

BeagleBone Black + Yocto

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.

Flavio De Castro Alves Filho
Sócio fundador da Phi Innovations e Professor das disciplinas de sistemas de tempo real e padrões e aplicações de sistemas operacionais do curso de pós graduação em eletrônica embarcada automotiva oferecido pelo SAE (Society of Automotive Engineers).Formado em Engenharia Elétrica pela UNICAMP, com especialização na Ecole Centrale de Lyon, na França, atua há mais de 10 anos em projetos de sistemas embarcados. Trabalhou com projetos de hardware e software embarcado para os setores de pagamento eletrônico, aeroespacial, defesa, segurança, equipamentos médicos, telecomunicações e energia. Atuou em projetos no Brasil e no exterior (França e Alemanha).Começou suas atividades com Linux em 1996 e suas atividades empreendedoras em 2008. É um geek e apaixonado pelo Do-It Yourself (DIY).

18
Deixe um comentário

avatar
 
18 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Ulysses FonsecaBeagleBone Black + Qt Embedded + YoctoRaspberry Pi - Qt5 + YoctoBeaglebone Black + Qt5 + YoctoBeaglebone Black Qt5 Yocto Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Ulysses Fonseca
Visitante
Ulysses Fonseca

Muito bom o artigo Flavio. Parabéns

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]

trackback

[…] Desvendando Yocto Project – Primeiros passos […]