Yocto Project E Como Usá-Lo Em Seu Próximo Projeto
Total Page:16
File Type:pdf, Size:1020Kb
padtec.com Introdução ao Yocto Project e como usá-lo em seu próximo projeto João Freitas [email protected] padtec.com [email protected] http://www.github.com/joaohf padtec.com Linux Embarcado Aplicação Aplicação • Fim específico • Conjunto reduzido • Autonomia Biblioteca Biblioteca Biblioteca Toolchain Biblioteca C Linux Kernel Hardware Padtec S/A © 2014 Todos os Direitos Reservados 4 Imagem do Sistema Bootloader • Tamanho reduzido Linux Kernel • Particionamento rootfs1 rootfs2 data Padtec S/A © 2014 Todos os Direitos Reservados 5 Sistema com Linux Embarcado Opções para construção: • Distribuição pronta • Gerar uma distribuição manualmente • Usar um sistema de build Padtec S/A © 2014 Todos os Direitos Reservados 6 Sistema com Linux Embarcado ● Usar uma distribuição pronta – Red Hat – Ubuntu – Suse – Archlinux – Slackware – Debian – Android, Emdebian, Tizen Padtec S/A © 2014 Todos os Direitos Reservados Sistema com Linux Embarcado ● Gerar uma distribuição manualmente – Controle Total – Flexibilidade – Trabalhoso – Reprodutibilidade ● Linux From Scratch: vale a experiência! – http://www.linuxfromscratch.org/ Padtec S/A © 2014 Todos os Direitos Reservados Sistema com Linux Embarcado ● Ferramenta de Build – Automatização do processo de geração – Conjunto de pacotes validados – Frameworks para extensão e desenvolvimento ● Buildroot, PTXdist, LTIB, BaseRock, OpenEmbedded, Poky Padtec S/A © 2014 Todos os Direitos Reservados Yocto Project Unidade SI de medição, igual a 10^24 http://www.yoctoproject.org Padtec S/A © 2014 Todos os Direitos Reservados O que é? ● Projeto Open Source ● Build System para Linux OS ● Coleção de projetos, métodos e ferramentas – Fácil customização – Um lugar para a Indústria publicar BSPs ● Fundado em 2010 ● Gerenciado por membros da Linux Foundation ● Cadência de releases: 6 meses Padtec S/A © 2014 Todos os Direitos Reservados O que é? ● “The Yocto Project is not an Embedded Linux Distribution – It creates a custom one for You!” ● “The Yocto Project is not Single Open Source Project – It is an Ecosystem” ● “The Yocto Project combines the convenience of a ready-to-run Linux Distribuition with the flexibility of a custom Linux operation system stack” ● “... to bring some order to the chaos of embedded Linux development” Padtec S/A © 2014 Todos os Direitos Reservados Quem faz? ● Comunidade de usuários ● Organizações – Desenvolvedores individuais – Embeded Hardware – Semicondutores – OS Vendors ● Linux Foundation Padtec S/A © 2014 Todos os Direitos Reservados Quem faz? ● Adivisory Board – LSI, Freescale, Wind River, OpenEmbedded – TI, Intel, LTSI, Juniper Networks, AMD – Mentor Graphics, LG, Dell, Broadcom, – Renesas, OS Systems, MontaVista, Huawei, – Enea Padtec S/A © 2014 Todos os Direitos Reservados Quem faz? ● Participantes ● Membros ● Colaboradores Padtec S/A © 2014 Todos os Direitos Reservados Quem usa? ● Distros Comerciais – Wind River Linux Carrier Grade Profile 5 – Wind River Linux 6 – Enea Linux 4.0 – MontaVista Linux Carrier Grade Edition 7 – Mentor Embedded Linux ● Distros – Angstron (http://www.angstrom-distribution.org) – Shr (http://shr-project.org) Padtec S/A © 2014 Todos os Direitos Reservados Quem usa? ● BSP (Board Support Package) – Intel – Freescale – Texas Instruments – Renesas – AMD Padtec S/A © 2014 Todos os Direitos Reservados O que eu preciso para usar? Para começar... ● PC padrão ● 50Gb de disco ● Um distro recente (debian, ubuntu, fedora, opensuse, centos) ● Pacotes de desenvolvimento (gcc,make,git) ● Uma release do Yocto Project ● http://www.yoctoproject.org/docs/1.7/yocto-project-qs/yocto-project-qs.ht ml Padtec S/A © 2014 Todos os Direitos Reservados O que eu preciso para usar? ● Se quiser brincar profissionalmente: – Processador Xeon, 16Gb RAM, 1Tb Disco, controlador RAID com cache alto ● Em casa: i5 terceira geração com 16Gb RAM e 1Tb HD 7200 SATA ● Um bom processador e disco com controladora rápida vai fazer a diferença. Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Build System: – Poky reference system ● Bitbake: build engine ● OpenEmbedded Core: receitas e classes bases – http://www.openembedded.org ● Core BSPs e layers Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Ferramentas de desenvolvimento – Application Development Toolkit – Hob – Toaster ● Eclise IDE Plugin: integração entre ADT e Eclipse ● AutoBuilder: build tests e QA ● cross-prelink, pseudo, swabber Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Tarefa (task): etapas executadas pelo build engine ● Receita (recipe): conjunto de tarefas necessárias para compilar determinado software (.bb, .bbappend) ● Classes (classes): herança e encapsulamento da lógica para a execução de tarefas comuns (.bbclass) Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Configuração (conf): arquivos com definições globais (.conf) ● Pacote (package): resultado do processamento da receita de um componente de software ● Camada (layer): conjunto de receitas, classes, arquivos de configuração que podem ser agregados ao sistema de build para estendê-lo ou modificar comportamentos Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Composição de layers Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Layers são blocos de construção Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Layer é o modo de extender o build system – Adicionar, remover, modificar ● Classes, receitas, configurações – São adicionadas no sistema Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Agrupe as layers por funcionalidade, exemplo: – Toolchains – BSP/Machine – Áreas funcionais (database, networking, languages) – Especificidades do projeto ● Pilhas de software de terceiros ● Componente usados em outros projetos ● Configurações Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? ● Máquina (machine): plataforma de hardware alvo da distribuição. Implementado através de uma layer BSP ● Imagem (image): imagem final do rootfs do sistema gerado ● Distribuição (distro): regras e políticas de geração da imagem do sistema Padtec S/A © 2014 Todos os Direitos Reservados Como funciona? Padtec S/A © 2014 Todos os Direitos Reservados Tem interface gráfica? ● Bitbake: linha de comando $ bitbake <receita> $ bitbake <receita> -c <task> $ bitbake <receita> -k $ bitbake -s Padtec S/A © 2014 Todos os Direitos Reservados Tem interface gráfica? ● HOB Padtec S/A © 2014 Todos os Direitos Reservados Tem interface gráfica? ● Toaster Padtec S/A © 2014 Todos os Direitos Reservados Distro YP X Distro customizada por mim? ● Distribuição Pronta, vantagens Framework de Simplicidade de uso desenvolvimento Pronto e funcional Facilidade na Base de usuários instalação (pacotes) Suporte comercial Padtec S/A © 2014 Todos os Direitos Reservados Distro YP X Distro customizada por mim? ● Distribuição Pronta, desvantagens Tempo de boot Falta de pode ser alto flexibilidade Requisitos de licença Pode não estar otimizada Experiência Requer tempo Para adaptação e customização Padtec S/A © 2014 Todos os Direitos Reservados O que o Yocto Project permite configurar numa distribuição? ● Versão dos componentes de sw ● Subsistemas – Systemv, systemd ● Features adicionais: alsa, wayland, x11, usb, pci ● Toolchain – Interna ou externa ● Versão de Linux Kernel Padtec S/A © 2014 Todos os Direitos Reservados Há alguma restrição de licença nas distribuições geradas? ● Não há restrição de licenças ● Há preocupação do YP em gerar distros legais – Opções para não permitir determinada licença – Manifesto de licenças – Exportação de código fonte, scripts, patches ● https://www.yoctoproject.org/blogs/davest/2012/binaries-considered-dang erous Padtec S/A © 2014 Todos os Direitos Reservados Caso: 1 distro 4 plataforma ● Plataformas: – 2 EVKs (ppc e x86-64) – plataforma alvo do produto – máquina virtual para integração ● Solução YP: – Distro e Linux Kernel comum – A mesma SDK – MACHINE=<plataforma alvo> Padtec S/A © 2014 Todos os Direitos Reservados Caso: Fabricante sumiu, cadê o BSP? ● BSP antigo (2002) – Fabricante não oferecia suporte ($$$) ● Necessidade de evolução kernel e userland ● Plataforma não otimizada ● Solução YP: – Redução do footprint – Toolchain otimizado – Bugfixes gerais e críticos solucionados – Controle de todos os componentes do produto Padtec S/A © 2014 Todos os Direitos Reservados Caso: Toolchains ● Geração de SDKs – Podem ser instaladas em qualquer workstation linux ● Mesma versão de GCC ● Target para diferentes plataformas Padtec S/A © 2014 Todos os Direitos Reservados Qual o resultado da construção? ● Imagem: ext2, ext3, cpio, directdisk, jffs2, ubi, cramfw, brtfs, live ● Linux kernel image (bz2, uImage) ● Pacotes (rpm, ipk, deb, tar) ● Manifesto das licenças de softwares usadas ● Histórico de build (buildhistory) ● Código fonte de todos os softwares usados ● Scripts de build e patches aplicados Padtec S/A © 2014 Todos os Direitos Reservados Quais plataformas são suportadas? ● Arquiteturas: ARM, PPC, MIPS, x86 e x86-64 ● Machines: qemuarm, qemumips64, qemumips, qemuppc, qemux86, qemux86-64 ● Vendor BSPs: – TI, FSF, Intel, AMD, LSI http://git.yoctoproject. org/ Padtec S/A © 2014 Todos os Direitos Reservados Quais softwares podem rodar nestas distribuições? Servidores web? Banco de dados? Controladores de hardware? ● Qualquer sw pode ser buildado e adicionado na imagem final ● Alguns sw são mais complicados de empacotar – Requerem buildtools exóticos ou scripts que não seguem padrões ● Como regra geral: qualquer artefato que o bitbake consiga empacotar, pode ser usado ● Qualquer