Projeto de Kiosk Interativo para a Beaglebone Black com Yocto - parte 3

projeto de kiosk interativo
Este post faz parte da série Projeto de Kiosk Interativo para a Beaglebone Black com Yocto. Leia também os outros posts da série:

Vimos na primeira e segunda partes da série do projeto do Kiosk Interativo como gerar, gravar e testar as imagens do web-kiosk e kiosk-manager na Beaglebone Black. Essas imagens servem como ponto de partida para desenvolvermos o produto e aplicação que desejamos. É muito provável que queremos ir além do que está pronto, customizando arquivos de configuração e adicionando novos pacotes a imagem.

O Yocto possui um conjunto de metadados organizados em camadas que serão processados pelo bitbake para a geração dos artefatos de software (bootloader, kernel, pacotes, bibliotecas e sistema de arquivos raíz) para o nosso target. Basicamente esses metadados podem ser dos tipos: Configurações do Yocto, da Distribuição e do Target (Machine) e Receitas para a construção dos artefatos (arquivos .bb).

As modificações desejadas podem ser realizadas sem que tenhamos que alterar as receitas originais. Isso facilita eventuais atualizações do sistema de build e o controle de mudanças fica bastante simplificado.

No processo de configuração do ambiente descrito na primeira parte, fizemos uso da organização em camadas quando baixamos e integramos a meta-ti e meta-web-kiosk. A meta-ti é classificada como uma camada de BSP (Board Support Package) e contém as receitas necessárias para a construção dos softwares baixo nível (bootloader, kernel, drivers e bibliotecas específicas) para placas que contém processadores fabricados pela Texas Instruments. Já a camada meta-web-kiosk possui as receitas de software alto nível, não se preocupando com o hardware em que será executado a aplicação.

Neste artigo vamos aprender como criar uma camada e estender as funcionalidades presentes nas imagens core-image-web-kiosk-image e core-image-kiosk-manager. A estrutura padrão de uma camada é composta por um arquivo de configuração presente em conf/layer.conf e de receitas (arquivos bb e bbappend) distribuídos em diferentes diretórios do tipo recipes-"categoria"/nome-do-pacote/nome-do-pacote_versão.bb|bbappend. As receitas com extensão bbappend servem para que possamos modificar as receitas originais sem que tenhamos que editá-las, ou seja, iremos adicionar ao arquivo o original através do arquivo bbappend.

Customizando as imagens

Vamos criar a nossa camada de customização meta-kiosk-custom com os seguintes comandos:

Como resultado, teremos o arquivo ~/yocto/kiosk-src/meta-kiosk-custom/conf/layer.conf:

Este arquivo tem as variáveis de configuração para o Yocto poder buscar e usar as receitas presentes.

Digamos que queremos adicionar todos os módulos do Python (pacote python-modules) disponíveis por padrão no Yocto em ambas as imagens a serem construídas. Os arquivos que definem essas imagens são: meta-web-kiosk/recipes-browser/images/core-image-web-kiosk.bb e meta-web-kiosk/recipes-manager/images/core-image-kiosk-manager.bb, respectivamente. Para isso vamos criar os respectivos arquivos bbappend dentro da nossa camada meta-kiosk-custom executando os comandos:

Como resultado teremos em ambos arquivos meta-kiosk-custom/recipes-browser/images/core-image-web-kiosk.bbappendmeta-kiosk-custom/recipes-manager/images/core-image-kiosk-manager.bbappend o seguinte conteúdo:

A variável IMAGE_INSTALL é a responsável por conter quais pacotes devem ir na imagem e note que estamos incrementando-a com o operador "+=" pois assim não removemos o que já foi inserido na receita original.

Para saber quais os pacotes disponíveis use a ferramenta de busca disponibilizada pelos desenvolvedores do Yocto/Openembedded. Atente-se ao fato de qual camada (Layer) provê um determinado pacote. Se ele não estiver presente no openembbeded-core você terá que baixar o repositório da camada em questão, usar o branch dora e adicionar o seu caminho na variável BBLAYERS dentro do arquivo ~/yocto/kiosk-build/conf/bblayers.conf.

Agora vamos supor que queremos que o nosso web-kiosk tenha a página web inicial diferente da que está no padrão. Para isso teremos que alterar o arquivo de configuração da sessão do Midori, que é o web browser utilizado. O arquivo de configuração original está presente em: meta-web-kiosk/recipes-browser/midori-session/files/config e o modificaremos para abrir a página do Embarcados. Vamos criar um bbappend da receita original (meta-web-kiosk/recipes-browser/midori-session/midori-session_0.1.bb) e adicionar o nosso novo arquivo de configuração. Execute os comandos abaixo:

Como resultado teremos o arquivo meta-kiosk-custom/recipes-browser/midori-session/files/config com o seguinte conteúdo:

E o arquivo meta-kiosk-custom/recipes-browser/midori-session/midori-session_0.1.bbappend

Veja que criamos a variável FILESEXTRAPATHS indicando qual o caminho que deve ser usado para encontrar os arquivos. A extensão "_prepend" força o bitbake a usar os arquivos nesse caminho como os padrões. Logo ele levará em consideração o arquivo meta-kiosk-custom/recipes-browser/midori-session/files/config invés do meta-web-kiosk/recipes-browser/midori-session/files/config.

Agora devemos configurar o Yocto para "enxergar" a nossa camada de customização. Adicione a linha abaixo no arquivo ~/yocto/kiosk-build/conf/bblayers.conf para a variável BBLAYERS.

Construindo as imagens customizadas 

O mesmo procedimento de construção das imagens descrito nos artigos anteriores serão realizados. Basta executar os seguintes comandos:

Gravando e testando as imagens customizadas do Kiosk Interativo

Estes processos são os mesmos descritos nas partes anteriores, com a diferença que teremos novas imagens geradas com as nossas customizações. Recorra a parte 1 para gravar e testar a imagem do web-kiosk e a parte 2 para o kiosk-manager.

Agora, ao invés da página inicial do web-kiosk ser a do Yocto Project, teremos a página no Embarcados entrando em cena logo a partir do primeiro boot do equipamento.

 

Conclusão

Essa série apresentou um passo-a-passo sobre processo de criação de uma distribuição Linux embarcado com o Yocto para um produto com aplicação real. Vimos como podemos customizar o processo de construção para adicionar modificações que desejamos para a nossa aplicação.

E você? Qual o produto irá desenvolver com o Yocto Project?

 

Para aprender mais

Embedded Linux Build Systems

Cozinhando com o Yocto Project

Desvendando Yocto Project – Primeiros passos

 

Outros artigos da série

<< Projeto de Kiosk Interativo para a Beaglebone Black com Yocto - parte 2
Este post faz da série Projeto de Kiosk Interativo para a Beaglebone Black com Yocto. Leia também os outros posts da série:
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.

Diego Sueiro
Formado em Engenharia de Controle e Automação pela UNIFEI e CEO do Embarcados, atualmente trabalho na Inglaterra com Desenvolvimento de Sistemas Linux Embarcado Real Time. Sou consultor e desenvolvedor de software para Sistemas Embarcados com vasta experiência em projetos com processadores de 8bits a 32bits, sistemas bare metal, RTOS, Linux Embarcado e Android Embarcado. Um apaixonado por Pink Floyd e Empreendedorismo.

12
Deixe um comentário

avatar
 
12 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
BeagleBone Black + Qt Embedded + Yocto - Parte 2Raspberry Pi - Qt5 + YoctoRaspberry pi Qt5 YoctoBeaglebone Black + Qt5 + YoctoBeaglebone Black Qt5 Yocto Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[…] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 […]

trackback

[...] Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3 [...]