SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
IMAGEM DESTAQUE
Um pouco sobre nós
● Fundada em 2017, a Emc Logic presta serviços de consultoria, treinamento e
desenvolvimento de software para Sistemas Embarcados microcontrolados e
microprocessados.
● Atuamos com projetos de diversas áreas, de equipamentos médicos até
tecnologias agrícolas, buscando encontrar encontrem soluções rápidas,
otimizadas, seguras e com um bom custo benefício.
Agenda
● Conhecendo o Yocto Project
● Principais conceitos técnicos
● Utilizando o Yocto no seu projeto de Linux Embarcado
● Dicas para a automatização do processo de desenvolvimento
Conhecendo o Yocto Project
O que é?
Yocto Project é um projeto colaborativo
open-source que fornece ferramentas para
desenvolvedores construírem sistemas e
distribuições Linux
● O Projeto, em si, não é um sistema de build: é um termo guarda-chuva para os
projetos que ele hospeda.
● São utilizados o OpenEmbedded-Core e o Bitbake como seus sistemas de build
● Não é uma distribuição Linux, mas ele serve para criar uma distribuição para seu
projeto
● Há um conjunto de projetos/softwares que fazem parte do ecossistema do Yocto,
tais como: OpenEmbedded-Core, BitBake, Poky, Matchbox, DevTool, Toaster,
entre outros….
Um pouco sobre sua origem…
● Lançado em 2011 pela Linux Foundation
● Grupo de colaboradores de peso para direcionar o projeto: representantes da Dell, Intel, Open
Embedded, Texas instruments, entre outras.
● Criado com o objetivo de ajudar empresas a desenvolver tecnologias open-source e de alta
qualidade, independentemente da estrutura de Hardware, utilizando Sistemas Linux
customizados para Embarcados.
● Sobre o projeto, a Linux Foundation disse em seu lançamento: "O projeto colaborativo junta
os elementos necessários para tornar o processo de desenvolvimento de Linux Embarcado
(normalmente complexo) muito mais fácil."
● Notícia do lançamento do Yocto em 2011:
https://www.linuxfoundation.org/press/press-release/the-linux-foundation-announces-yocto-project-s
teering-group-and-release-1-0
Delineamento e objetivos do projeto
● Criar local de colaboração para projetos open source de maneira que o
desenvolvimento de plataformas e sistemas embarcados baseados em Linux seja
estimulado
● Estimular a padronização e a reutilização de componentes já existentes em
plataformas de desenvolvimento
● Documentar os métodos e ferramentas disponíveis para que qualquer usuário
possa utilizar
● Garantir que o desenvolvimento seja independente em sua arquitetura de
hardware
Empresas que usam Yocto
Um exemplo de hardware
● Placa SoM da Microchip:
SAM9X60D1G-SOM
● Tem como uma de suas bases o Yocto, ou
seja, possui uma camada onde foi
construído o BSP (Board Support
Package) para essa placa
● Link GitHub com a BSP da placa:
https://github.com/linux4sam/meta-atmel/blo
b/master/conf/machine/sam9x60ek.conf
Um exemplo de produto
● O Sistema Operacional utilizado
para o Hardware de alguns
televisores da LG se chama webOS
● O webOS utiliza o Yocto como a
base de seu sistema de build
Principais conceitos Técnicos
3 maneiras principais
para desenvolver sistemas Linux
Podemos abordar o desenvolvimento de um sistema Linux Embarcado por
três abordagens principais:
1. Distribuição pronta de terceiros
2. Compilar um sistema Linux/distribuição manualmente
3. Compilação de um sistema Linux/distribuição auxiliada por um
sistema de build
Distribuições prontas
Distribuições prontas
Cons
● Pouca flexibilidade para
componentes (inicialização de
scripts, daemon e etc.
● Pacotes pré-compilados e
providos externamente -
possível impacto na segurança
● Distribuição é genérica e
geralmente não otimizada
Prós
● Simplicidade de uso
● Facilidade em estender
funcionalidades – pacotes
pronto pré-compilados via .deb,
.rpm e etc
● Ambiente de desenvolvimento
prontos
Sistema de Build
● Um sistema de build permite gerar um sistema Linux completo para um
hardware específico
● Possuí um conjunto de ferramentas para automatizar a geração de
componentes do sistema (bootloader, kernel, rootfs e toolchain)
● Possuí um conjunto de pacotes pré-configurados com fácil habilitação pelo
usuário
● Oferece total customização e controle do sistema Linux
● Auxilia no processo de gerenciamento de licenças
● As builds são controladas e reproduzíveis
Sistema de Build
● Buildroot - https://buildroot.org/
● OpenWrt - https://openwrt.org/
● Yocto Project - https://www.yoctoproject.org/
Arquitetura
Metadados
● Os metadados contém as informações do que deve ser feito durante a geração de
uma distribuição Linux
● Todo trabalho e codificação no yocto é feita através da manipulação de
metadados
● São Exemplos de metadados:
○ Receitas (.bb e .bbappend)
○ Classes (.bbclass)
○ Configuracoes (.conf)
Distro | Machine | Image
➔ Distro: como eu quero montar meu
sistema
➔ Machine: qual placa/hardware eu
irei utilizar
➔ Image: quais pacotes/softwares eu
quero utilizar
IMAGE
MACHINE
DISTRO
Poky
● Poky é a distribuição base oficial utilizada no Yocto Project:
https://git.yoctoproject.org/poky
● Contém a base do sistema de build (BitBake e OpenEmbedded-Core) e um
conjunto de metadados para gerar distribuições Linux.
● Pode ser facilmente estendido por meio do conceito de camadas
● Seus componentes principais são:
1. BitBake: processador/executor de tarefas
2. Metadados: definição das tarefas e parâmetros para execução (o que fazer
e como fazer)
Receitas
● Arquivo com extensão .bb ou .bbappend
● A receita (.bb) constitui um a definição de um determinas tarefas enquanto
(.bbappend) é um anexo e/ou extensão de uma determinada receita
● Uma receita é responsável por descrever e processar um determinado
componente de software
● Uma lista das principais variáveis para descrever uma receita pode ser
encontrada em: https://docs.yoctoproject.org/ref-manual/varlocality.html#recipes
Tarefa Descrição
do_fetch Através da URL pelo SRC_URI, faz o download do código-fonte
do_unpack Após do download, descompactar o conteúdo no WORKDIR da receita.
do_patch Caso necessário, aplica um patch especificado via SRC_URI
do_configure Realiza a configuração antes de compilar o código, se necessário
do_compile Compila o código-fonte utilizando GNU autotools, CMake e etc
do_install Copia o resultado da compilação de B (diretório de build) para D (diretório de destino)
do_package Cria o pacote com resultado da compilação no formatos especificados (DEB, RPM ou OPKG)
https://github.com/schnitzeltony/meta-retro/blob/master/recipes-games/doomretro/doomretro.bb
Camadas
● Os metadado (receitas, classes e arquivo de configuração) são organizados em
camadas (layers) no sistema de build
● As camadas facilitam a manutenção e incentivam o reuso de metadados
● No Yocto Project, um sistema Linux é gerado através de combinação de
camadas
Três tipos de camadas
● BSP: refere ao MACHINE e é onde se define pacotes e configurações para uma
placa específica
○ conf/machine/[MACHINE].conf
● Distribution: define um DISTRO
○ conf/distro/[DISTRO].conf
● Software: O restante
○ Bibliotecas, ex: Qt5
○ Linguagens de programação, ex: Java
○ Ferramentas, ex: virtualização e selinux
ttps://layers.openembedded.org/layerindex/br
anch/master/layer/openembedded-core/
Exemplo de build Yocto
https://asciinema.org/a/556161
Dicas para uso no dia a dia e para a
automatização de processos no
desenvolvimento
Arquitetura
Software Development Kit (SDK)
Além das imagens finais que serão utilizadas no dispositivos embarcados, o Yocto pode gerar de forma
automática o SDK para desenvolvimento. Possuímos dois tipos:
● SDK Standard
○ Utilizado pelos desenvolvedores de aplicação (onde é necessário conhecer o Yocto em si)
○ É possível utilizar o toolchain e o cross-compilador para desenvolvimento ex: qt5
○ Esse toolchain fornece todos os conjuntos de bibliotecas que são necessárias para compilar
um aplicativo para "target" em questão
● SDK Extensible
○ Possui todas as features do SDK Standard
○ Pode ser utilizado por outros desenvolvedores Yocto para desenvolvimento de receitas
○ Também é possível compilar novas imagens e emular elas via QEMU
○ Podemos criar uma receita e fazer o deploy direto em uma sistema emulado para testes
Devtool
Fase de desenvolvimento
devtool add
devtool build
devtool deploy-target
workspace
binario
Recipe
Source code
Teste do binario
Fase de
teste Coleta de erros
Target ou emulador
HOST
devtool edit-recipe
devtool modify
SDK / Devtool
● devtool add : https://asciinema.org/a/556172
● devtool deploy-target : https://youtu.be/F7_YznfnFjg
QEMU
https://asciinema.org/a/556160
Automação e CI/CD
Trigger
timer
Git review
manual
Build Staging / Deploy
Jenkins
Master
Jenkins
build node
Job
imagens logs
Automação e CI/CD
https://autobuilder.yoctoproject.org/typhoon
Automação e CI/CD
CONTATO
Quaisquer dúvidas, só entrar em contato conosco:
● E-mail Bruna: bruna.jacomelli@emc-logic.com
● E-mail Fernando: fernando.cola@emc-logic.com
● Site: https://www.emc-logic.com/
● Linkedin: https://www.linkedin.com/company/emc-logic/
● WhatsApp: (16) 93618-1941
www.embarcados.com.br
linkedin.com/embarcados
@portalembarcados
youtube/Embarcados TV
OBRIGADO!

Mais conteúdo relacionado

Semelhante a Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Linux Embarcado

Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando Programas
Luiz Arthur
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
tdc-globalcode
 

Semelhante a Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Linux Embarcado (20)

tutorial nagios
tutorial nagiostutorial nagios
tutorial nagios
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbed
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Apresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno CottaApresentacao android por Júlio Cesar Bueno Cotta
Apresentacao android por Júlio Cesar Bueno Cotta
 
Zabbix, Grafana e os conteineres Docker
Zabbix, Grafana e os conteineres DockerZabbix, Grafana e os conteineres Docker
Zabbix, Grafana e os conteineres Docker
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando Programas
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Python e frameworks web
Python e frameworks webPython e frameworks web
Python e frameworks web
 
Apresentação wxWidgets
Apresentação wxWidgetsApresentação wxWidgets
Apresentação wxWidgets
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
Detalhamento entrega linux4.0
Detalhamento entrega linux4.0Detalhamento entrega linux4.0
Detalhamento entrega linux4.0
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 

Mais de Embarcados

Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Embarcados
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Embarcados
 

Mais de Embarcados (20)

Webinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoWebinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásico
 
Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdf
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes Passivos
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DC
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP segura
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissional
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2G
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores Murata
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
 
Webinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de caboWebinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de cabo
 
Webinar: Desvendando as camadas de IoT
Webinar: Desvendando as camadas de IoTWebinar: Desvendando as camadas de IoT
Webinar: Desvendando as camadas de IoT
 

Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Linux Embarcado

  • 2.
  • 3. Um pouco sobre nós ● Fundada em 2017, a Emc Logic presta serviços de consultoria, treinamento e desenvolvimento de software para Sistemas Embarcados microcontrolados e microprocessados. ● Atuamos com projetos de diversas áreas, de equipamentos médicos até tecnologias agrícolas, buscando encontrar encontrem soluções rápidas, otimizadas, seguras e com um bom custo benefício.
  • 4. Agenda ● Conhecendo o Yocto Project ● Principais conceitos técnicos ● Utilizando o Yocto no seu projeto de Linux Embarcado ● Dicas para a automatização do processo de desenvolvimento
  • 6. O que é? Yocto Project é um projeto colaborativo open-source que fornece ferramentas para desenvolvedores construírem sistemas e distribuições Linux
  • 7. ● O Projeto, em si, não é um sistema de build: é um termo guarda-chuva para os projetos que ele hospeda. ● São utilizados o OpenEmbedded-Core e o Bitbake como seus sistemas de build ● Não é uma distribuição Linux, mas ele serve para criar uma distribuição para seu projeto ● Há um conjunto de projetos/softwares que fazem parte do ecossistema do Yocto, tais como: OpenEmbedded-Core, BitBake, Poky, Matchbox, DevTool, Toaster, entre outros….
  • 8. Um pouco sobre sua origem… ● Lançado em 2011 pela Linux Foundation ● Grupo de colaboradores de peso para direcionar o projeto: representantes da Dell, Intel, Open Embedded, Texas instruments, entre outras. ● Criado com o objetivo de ajudar empresas a desenvolver tecnologias open-source e de alta qualidade, independentemente da estrutura de Hardware, utilizando Sistemas Linux customizados para Embarcados. ● Sobre o projeto, a Linux Foundation disse em seu lançamento: "O projeto colaborativo junta os elementos necessários para tornar o processo de desenvolvimento de Linux Embarcado (normalmente complexo) muito mais fácil." ● Notícia do lançamento do Yocto em 2011: https://www.linuxfoundation.org/press/press-release/the-linux-foundation-announces-yocto-project-s teering-group-and-release-1-0
  • 9. Delineamento e objetivos do projeto ● Criar local de colaboração para projetos open source de maneira que o desenvolvimento de plataformas e sistemas embarcados baseados em Linux seja estimulado ● Estimular a padronização e a reutilização de componentes já existentes em plataformas de desenvolvimento ● Documentar os métodos e ferramentas disponíveis para que qualquer usuário possa utilizar ● Garantir que o desenvolvimento seja independente em sua arquitetura de hardware
  • 11. Um exemplo de hardware ● Placa SoM da Microchip: SAM9X60D1G-SOM ● Tem como uma de suas bases o Yocto, ou seja, possui uma camada onde foi construído o BSP (Board Support Package) para essa placa ● Link GitHub com a BSP da placa: https://github.com/linux4sam/meta-atmel/blo b/master/conf/machine/sam9x60ek.conf
  • 12. Um exemplo de produto ● O Sistema Operacional utilizado para o Hardware de alguns televisores da LG se chama webOS ● O webOS utiliza o Yocto como a base de seu sistema de build
  • 14. 3 maneiras principais para desenvolver sistemas Linux Podemos abordar o desenvolvimento de um sistema Linux Embarcado por três abordagens principais: 1. Distribuição pronta de terceiros 2. Compilar um sistema Linux/distribuição manualmente 3. Compilação de um sistema Linux/distribuição auxiliada por um sistema de build
  • 16. Distribuições prontas Cons ● Pouca flexibilidade para componentes (inicialização de scripts, daemon e etc. ● Pacotes pré-compilados e providos externamente - possível impacto na segurança ● Distribuição é genérica e geralmente não otimizada Prós ● Simplicidade de uso ● Facilidade em estender funcionalidades – pacotes pronto pré-compilados via .deb, .rpm e etc ● Ambiente de desenvolvimento prontos
  • 17. Sistema de Build ● Um sistema de build permite gerar um sistema Linux completo para um hardware específico ● Possuí um conjunto de ferramentas para automatizar a geração de componentes do sistema (bootloader, kernel, rootfs e toolchain) ● Possuí um conjunto de pacotes pré-configurados com fácil habilitação pelo usuário ● Oferece total customização e controle do sistema Linux ● Auxilia no processo de gerenciamento de licenças ● As builds são controladas e reproduzíveis
  • 18. Sistema de Build ● Buildroot - https://buildroot.org/ ● OpenWrt - https://openwrt.org/ ● Yocto Project - https://www.yoctoproject.org/
  • 20. Metadados ● Os metadados contém as informações do que deve ser feito durante a geração de uma distribuição Linux ● Todo trabalho e codificação no yocto é feita através da manipulação de metadados ● São Exemplos de metadados: ○ Receitas (.bb e .bbappend) ○ Classes (.bbclass) ○ Configuracoes (.conf)
  • 21. Distro | Machine | Image ➔ Distro: como eu quero montar meu sistema ➔ Machine: qual placa/hardware eu irei utilizar ➔ Image: quais pacotes/softwares eu quero utilizar IMAGE MACHINE DISTRO
  • 22. Poky ● Poky é a distribuição base oficial utilizada no Yocto Project: https://git.yoctoproject.org/poky ● Contém a base do sistema de build (BitBake e OpenEmbedded-Core) e um conjunto de metadados para gerar distribuições Linux. ● Pode ser facilmente estendido por meio do conceito de camadas ● Seus componentes principais são: 1. BitBake: processador/executor de tarefas 2. Metadados: definição das tarefas e parâmetros para execução (o que fazer e como fazer)
  • 23. Receitas ● Arquivo com extensão .bb ou .bbappend ● A receita (.bb) constitui um a definição de um determinas tarefas enquanto (.bbappend) é um anexo e/ou extensão de uma determinada receita ● Uma receita é responsável por descrever e processar um determinado componente de software ● Uma lista das principais variáveis para descrever uma receita pode ser encontrada em: https://docs.yoctoproject.org/ref-manual/varlocality.html#recipes
  • 24. Tarefa Descrição do_fetch Através da URL pelo SRC_URI, faz o download do código-fonte do_unpack Após do download, descompactar o conteúdo no WORKDIR da receita. do_patch Caso necessário, aplica um patch especificado via SRC_URI do_configure Realiza a configuração antes de compilar o código, se necessário do_compile Compila o código-fonte utilizando GNU autotools, CMake e etc do_install Copia o resultado da compilação de B (diretório de build) para D (diretório de destino) do_package Cria o pacote com resultado da compilação no formatos especificados (DEB, RPM ou OPKG)
  • 26. Camadas ● Os metadado (receitas, classes e arquivo de configuração) são organizados em camadas (layers) no sistema de build ● As camadas facilitam a manutenção e incentivam o reuso de metadados ● No Yocto Project, um sistema Linux é gerado através de combinação de camadas
  • 27. Três tipos de camadas ● BSP: refere ao MACHINE e é onde se define pacotes e configurações para uma placa específica ○ conf/machine/[MACHINE].conf ● Distribution: define um DISTRO ○ conf/distro/[DISTRO].conf ● Software: O restante ○ Bibliotecas, ex: Qt5 ○ Linguagens de programação, ex: Java ○ Ferramentas, ex: virtualização e selinux
  • 29. Exemplo de build Yocto https://asciinema.org/a/556161
  • 30. Dicas para uso no dia a dia e para a automatização de processos no desenvolvimento
  • 32. Software Development Kit (SDK) Além das imagens finais que serão utilizadas no dispositivos embarcados, o Yocto pode gerar de forma automática o SDK para desenvolvimento. Possuímos dois tipos: ● SDK Standard ○ Utilizado pelos desenvolvedores de aplicação (onde é necessário conhecer o Yocto em si) ○ É possível utilizar o toolchain e o cross-compilador para desenvolvimento ex: qt5 ○ Esse toolchain fornece todos os conjuntos de bibliotecas que são necessárias para compilar um aplicativo para "target" em questão ● SDK Extensible ○ Possui todas as features do SDK Standard ○ Pode ser utilizado por outros desenvolvedores Yocto para desenvolvimento de receitas ○ Também é possível compilar novas imagens e emular elas via QEMU ○ Podemos criar uma receita e fazer o deploy direto em uma sistema emulado para testes
  • 33. Devtool Fase de desenvolvimento devtool add devtool build devtool deploy-target workspace binario Recipe Source code Teste do binario Fase de teste Coleta de erros Target ou emulador HOST devtool edit-recipe devtool modify
  • 34. SDK / Devtool ● devtool add : https://asciinema.org/a/556172 ● devtool deploy-target : https://youtu.be/F7_YznfnFjg
  • 36. Automação e CI/CD Trigger timer Git review manual Build Staging / Deploy Jenkins Master Jenkins build node Job imagens logs
  • 39.
  • 40.
  • 41. CONTATO Quaisquer dúvidas, só entrar em contato conosco: ● E-mail Bruna: bruna.jacomelli@emc-logic.com ● E-mail Fernando: fernando.cola@emc-logic.com ● Site: https://www.emc-logic.com/ ● Linkedin: https://www.linkedin.com/company/emc-logic/ ● WhatsApp: (16) 93618-1941