====== Yocto Project ====== O Yocto Project é é uma iniciativa para englobar e uniformizar vários projetos de desenvolvimento de software embarcado, dentre os quais o OpenEmbedded. Suporta diversas arquiteturas e aparantemente SOs (o default é o Poky, contra o Angstrom do OE). Mais informações em [[https://www.yoctoproject.org]]. Vale a pena também ler [[http://blogs.mentor.com/chrishallinan/blog/2012/04/13/yocto-versus-poky-versus-angstrom-etc/|esse artigo]]. ===== 1. Instalação ===== Nessa página pode ser encontrado um guia [[https://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html|Quick Start]], **no entanto** recomendo seguir o guia [[https://github.com/gumstix/Gumstix-YoctoProject-Repo|Gumstix-YoctoProject-Repo]], que é direcionado para o caso específico do Gumstix. Uma terceira variação é apresentada por Scott Ellis no seu site [[http://www.jumpnowtek.com/index.php?option=com_content&view=article&id=85&Itemid=97|JumpNowTech]], mas eu não cheguei a prosseguir com essa. No Ubuntu 12.04 LTS instalou sem problemas. Para instalar no CentOS 6.3 foi necessário forçar a instalação de uma versão atual (1.7.12) do git, já que o git padrão da distribuição era (quando isso foi escrito) o 1.7.1. Como fazer isso [[tutoriais:centosgit|aqui]]. ==== 1.1 Fonte alternativa ==== Achei outra versão no GitHub, parece fornecer mais material para o Gumstix. $ makedir /yocto $ cd /yocto $ git clone https://github.com/dirtybit/gumstix-yocto.git De qualquer forma vale a pena dar uma olhada no guia mencionado acima. Para atualizar: $ cd /yocto $ git pull yocto ==== 1.2 Permissões ==== Pode ser uma boa ideia mudar o dono do diretório, para não ter problemas com permissões: $ sudo chwon -R usuario diretorio ===== 2. Compilando uma imagem ===== Se as instruções do link acima foram seguidas corretamente, deve ser possível compilar uma imagem usando o bitbake: $ cd /yocto/ $ TEMPLATECONF=meta-gumstix-extras/conf source ./poky/oe-init-build-env $ bitbake gumstix-console-image Note que isso poderá demorar algumas horas, dependendo da máquina e da conexão. No caso de algum pacote dar problema, a solução mais simples é deletar o arquivo .bb referente, caso este seja dispensável, ou retirá-lo do .bb que o referencia, caso esse seja obrigatório (RDEPENDS). Por segurança eu movo-os para uma outra pasta, para poder voltar caso necessário. Os sistema de arquivos e os arquivos de boot vão ser gerandos na pasta {TOP}/tmp/deploy/images/. Copie-os seguindo as instruções [[tutoriais:bootable_sdcard| aqui]]. ==== 2.1 Ferramenta Gráfica ==== Alternativamente pode-se usar o Hob, interface gráfica para gerenciar as 'layers' do Yocto, configurar e compilar imagens ou pacotes: $ cd /yocto/ $ TEMPLATECONF=meta-gumstix-extras/conf source ./poky/oe-init-build-env $ hob No caso do Yocto ter sido obtido do repositório dirtybit, não há essa variável TEMPLATECONF. Para ser capaz de compilar para o overo é necessário adicionar as 'layers' correspondentes, que podem ser selecionadas escolhendo-se o diretório que contém um arquivo conf. Os pacotes selecionados serão compilados primeiro, e somente depois será compilada a imagem. Caso algum pacote dê problema, você pode voltar e desmarcá-lo. ==== 2.2 Imagens personalizadas ==== É possível utilizar o Hob para criar imagens personalizadas, selecionando graficamente os pacotes que serão instalados dentro outras configurações. Porém às vezes (ou em algumas versões) não é possível salvar a configuração feita. Por isso convêm criar uma recipe '.bb' na mão utilizando os modelos presentes dos seguintes diretórios: * /yocto/poky/meta/recipes-core/images * /yocto/poky/meta/recipes-extended/images * /yocto/poky/meta-gumstix-extras/recipes-images/gumstix ==== Configurações de kernel / hardware ==== A imagem '.bb' contém aparentemente apenas configurações de software, i.e. quais pacotes serão instalados. Para configurações de suporte ao hardware e outras configurações a nível de kernel conferir: * yocto-kernel * /yocto/poky/meta-gumstix/conf/machine/overo.conf ===== 3 Mantendo-se atualizado ===== Dentro da pasta raiz (ex.: /yocto/): $ repo sync Isso irá baixar as versões mais atuais do repositório. Caso dê "error: .repo/manifests/: contains uncommitted changes": $ cd /yocto/.repo/manifests $ git reset --hard $ repo sync No caso do repositório baixado do dirtybit, não é usado repo, mas git: $ cd /yocto/gumstix-yocto $ git pull