Obtenção das imagens do Yocto Project

Para realizar o processo de iniciação do sistema operacional Yocto Project no computador embarcado Gumstix, precisamos de três arquivos específicos, são eles o primeiro estágio do sistema de iniciação, o arquivo MLO (Minimal Loader), o segundo estágio do sistema de iniciação, o arquivo u-boot.img (a sigla vem de Universal Bootloader), e a imagem do sistema, que em nosso caso será o Yocto 1.8.2 com kernel Linux.

../../../_images/yocto_exemple.png

A figura mostra um exemplo dos arquivos descritos no parágrafo anterior, observe que, neste caso, há também uma pasta compactada que contém os arquivos raiz do sistema operacional. O modo mais simples encontrado para se obter esses arquivos e a imagem do sistema operacional é seguindo os passos do arquivo README.md do repositório do projeto Yocto para produtos Gumstix. A vantagem de se utilizar esse método ao invés de simplesmente obter a imagem pronta do sistema operacional é que caso seja necessário poderemos modifica-la.

Esse tutorial explica como construir manualmente a imagem do sistema Yocto e realizar todos os procedimentos através de linhas de comando do terminal do Linux, com ênfase no Ubuntu 14.04 (LTS). Porém, para executar essa etapa é altamente recomendado o cumprimento dos requisitos indicadas pelo projeto Yocto.

Requisitos do Sistema

Nota

Para mais informações a respeito dos requisitos do sistema, consulte System Requirements - Yocto Project Reference Manual.

O desenvolvimento de projetos no ambiente do Yocto Project requer que alguns requisitos sejam cumpridos, são eles:

  • Um sistema com no mínimo 25 GB de espaço livre em disco executando uma distribuição Linux suportada. Se o sistema host suportar vários núcleos e encadeamentos, você poderá configurar o sistema de construção do Yocto Project para diminuir significativamente o tempo necessário para construir imagens.
  • Pacotes apropriados instalados no sistema utilizado para realizar as compilações.
  • Uma distribuição do Projeto Yocto.

Atualmente, o Project Yocto é suportado nas seguintes distribuições Linux.

  • Ubuntu 12.04 (LTS)
  • Ubuntu 13.10
  • Ubuntu 14.04 (LTS)
  • Fedora release 19 (Schrödinger’s Cat)
  • Fedora release 20 (Heisenbug)
  • CentOS release 6.4
  • CentOS release 6.5
  • Debian GNU/Linux 7.0 (Wheezy)
  • Debian GNU/Linux 7.1 (Wheezy)
  • Debian GNU/Linux 7.2 (Wheezy)
  • Debian GNU/Linux 7.3 (Wheezy)
  • Debian GNU/Linux 7.4 (Wheezy)
  • Debian GNU/Linux 7.5 (Wheezy)
  • Debian GNU/Linux 7.6 (Wheezy)
  • openSUSE 12.2
  • openSUSE 12.3
  • openSUSE 13.1

Nota

Para obter uma lista mais detalhada de distribuições que suportam o Projeto Yocto, consulte a seção Supported Linux Distributions em Yocto Project Reference Manual.

Para a construção da imagem do sistema operacional, o sistema de compilação deve possuir as seguintes versões do softwares Git, tar e Python.

  • Git 1.8.3.1 ou posterior
  • tar 1.27 ou posterior
  • Python 3.4.0 ou posterior

Nota

Consulte a seção Required Git, tar, and Python Versions no Yocto Project Reference Manual para obter informações.

Além disso, recomenda-se atualizar os repositórios do Linux. Para tal, no caso de distribuição Ubuntu, basta executar o seguinte comando:

$ sudo apt-get update && sudo apt-get upgrade

É necessária ainda a instalação dos pacotes de host essenciais para a construção da imagem. O comando a seguir instala os pacotes de host com base em sistemas com distribuição Ubuntu.

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm curl

Nota

Para instalar os pacotes de host em outras distribuições Linux suportadas, consulte a seção Required Packages for the Build Host em Yocto Project Reference Manual.

Configurando a imagem

Nota

O sistema operacional utilizado para testar os comandos foi Ubuntu 14.04 (LTS).

Linhas de comando Linux para obtenção e montagem da imagem.

  1. Instalando o repositório

Para fazer o download das imagens do Yocto, primeiro precisamos instalar o comando repo. Em resumo, o repo é basicamente um invólucro do git, que fornece uma maneira simples de agrupar vários repositórios git diferentes em um único projeto. Caso tenha interesse em mais informações sobre o comando repo, acesse repo - gerrit.googlesource.com.

Baixe os scripts do repositório

$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > repo

Torne os arquivos executáveis

$ chmod a+x repo

Mova os arquivos para o caminho do sistema

$ sudo mv repo /usr/local/bin/

Se tudo ocorrer bem, deverá aparecer uma mensagem de utilização similar a imagem ao executar o comando a seguir. Esse comando não é obrigatório.

$ repo --help
../../../_images/yocto_repo.png
  1. Criando um repositório local

Crie um diretório para os arquivos e altera o diretório de execução para o novo repositório

$ mkdir yocto
$ cd yocto

Agora com o repositório já instalado, faremos o download de todas as configurações do Yocto para o nosso projeto. O comando init pode levar algum tempo, pois faz o download de todos os repositórios git associados ao projeto. Já o comando -b especifica a ramificação a ser usada e o comando fido seleciona o ramo mais estável do repositório.

$ repo init -u git://github.com/gumstix/yocto-manifest.git -b fido

Uma inicialização bem-sucedida terminará com uma mensagem informando que o .repo foi inicializado no seu diretório de trabalho. Agora seu diretório deve conter uma pasta .repo onde os arquivos de controle de repositório estão armazenados, mas não é necessário abrir o diretório.

../../../_images/yocto_init.png
  1. Baixando os arquivos

O comando a seguir é usado para garantir que todos os seus repositórios estejam atualizados e é útil para atualizar suas configurações do Yocto se você fizer uma compilação posteriormente.

$ repo sync

Nota

Está etapa pode demorar mais de 20 minutos, dependendo da sua conexão de internet.

Force todos os arquivos temporários a serem escritos em dispositivos permanentes através do comando:

$ sync
  1. Iniciando o Yocto Project Build Environment

Aviso

Se, por algum motivo, você cancelar a atividade antes de concluir a compilação do Yocto, será necessário executar este comando todas as vezes antes de seguir para as próximas etapas. Lembre-se de que isso também se aplica a compilações futuras.

Agora que temos nossas configurações básicas do Yocto, entraremos em nosso ambiente de compilação. Por meio do comando a seguir, iremos copiar as informações de configuração padrão no diretório poky/build/conf e configurar algumas variáveis de ambiente para o sistema de montagem da imagem.

$ export TEMPLATECONF=meta-gumstix-extras/conf
$ source ./poky/oe-init-build-env

Nota

Este diretório de configuração não está sob controle de revisão, portanto você pode editar esses arquivos de configuração para sua instalação específica.

  1. Criando a imagem

O project Yocto utiliza o bitbake para compilar a imagem do Yocto Linux. O Bitbake basicamente compila apenas o SO, o kernel, os módulos e todos os pacotes incluídos no SO Linux de destino.

Dica

(OPCIONAL) Se você tiver familiaridade com a compilação via make, poderá acelerar o processo de compilação dizendo ao bitbake para compilar com mais threads. Esta etapa não é necessária, mas se você estiver compilando em um sistema com uma CPU de ponta com muitos núcleos, isso acelerará o tempo de compilação. Por exemplo:

$ export PARALLEL_MAKE="-j 8"

O número «8» indica a quantidade de núcleos a ser utilizada na compilação. Vale ressaltar que você não deve especificar um valor -j maior que a quantidade de núcleos de CPU presentes em sua máquina de construção.

Assim, para baixar os códigos fonte e compilar as imagens do sistema execute:

$ bitbake gumstix-console-image

Nota

Esse processo baixa vários gigabytes de código e, em seguida, faz uma enorme compilação. Portanto, certifique-se de ter pelo menos os 25GB de espaço livre. Esta etapa pode levar um dia ou mais para a criação da imagem, a depender da sua conexão de internet. Não se preocupe, é apenas a primeira compilação que demora um pouco.

Após a finalização da execução de todos os comandos, recomenda-se verificar a pasta /yocto/build/tmp/deploy/images/overo, essa pasta deve conter arquivos binários de kernel e bootloaders e arquivos de diretório raiz no formato .tar.

A figura abaixo apresenta um exemplo do conteúdo da pasta descrita, essa pasta deve ser semelhante ao obtido após a execução dos procedimentos anteriores.

../../../_images/yocto_image.png

Na figura podemos encontrar tanto os bootloaders necessários descritos anteriormente como o binário (.ubi) e arquivos do diretório raiz de algumas versões do projeto Yocto.

Aviso

Possíveis causas de falhas provavelmente estão relacionadas com softwares faltosos ou desatualizados, sistema operacional não compatível ou falta de espaço livre.

Referências