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 esse artigo.
1. Instalação
Nessa página pode ser encontrado um guia Quick Start, no entanto recomendo seguir o guia Gumstix-YoctoProject-Repo, que é direcionado para o caso específico do Gumstix.
Uma terceira variação é apresentada por Scott Ellis no seu site JumpNowTech, mas eu não cheguei a prosseguir com essa.
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.
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 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