Yocto Project - ASTROINGENIERIA/ASTROUFRO GitHub Wiki

¿Que es Yocto?

Yocto es un proyecto auspiciado por la Linux Foundation, y provee herramientas, procesos, plantillas y métodos, para que desarrolladores puedan crear y desplegar productos de software para sistemas embebidos como el Raspberry Pi, Beagleboard, Nitrogen6x, SAMA5D3, Olinuxino, etc, o para QEMU. Yocto posee 2 componentes principales:

  • Poky: el sistema de compilación (the reference distribution).
  • BitBake: el scheduler (basado en la distribución Gentoo)

Se estableció que el Proyecto Yocto y el proyecto OpenEmbedded se coordinarían para realizar un conjunto basico (core) de paquetes de metadata llamado OE-Core, que combina lo mejor de Poky y OpenEmbedded con un incremento en el uso de layers para componentes adicionales.

El Sistema de Compilación (build system)

El sistema de compilación de Yocto permite:

  • Compilar aplicaciones en forma standard o por compilación cruzada.
  • Empaquetar aplicaciones (package)
  • Probar los binarios y la compatibilidad del ecosistema
  • Desplegar (deploy) las imágenes generadas.

Para ejecutar estas tareas existen varias herramientas:

Por ejemplo, Buildroot sorresponde a un conjunt de makefiles para la generación automática de sistemas embebidos. Este soporta la compilación: del bootloader (U-Boot, por ejemplo), kernel (zImage o bzImage), y controles básicos por medio de BusyBox y otras aplicaciones externas. Buildroot trabaja con en varias arquitecturas, como ARM, x86, y MIPS. Para más información consultar en https://buildroot.org/docs.html

Buildroot es un approach mucho más simple que los que usa Yocto, debido a que Buildroot esta orientado a la generación de firmware, mientras que Yocto/OpenEmbedded se orienta a generar distribuciones.

Los Componentes Básicos (core) de Yocto Los componentes básicos del proyecto Yocto son:

  • BitBake
  • OpenEmbedded-Core
  • Poky
  • El layer BSP (meta-raspberry, meta-fsl-arm, meta-ti, meta-intel, meta-sunxi, etc.)

La imagen siguiente muestra todos los layers utilizados en Yocto. yocto-layers

¿Que es Poky?

Poky es la distribución de referencia del Proyecto Yocto, la cual contiene alguna de las componentes básicas de OpenEmbedded y un conjunto de metadata para crear distribuciones de sistemas embebidos para un número de targets. Poky es independiente de la plataforma y ejecuta compilación cruzada utilizando la herramienta BitBake (que es un planificador de tareas o task scheduler), OpenEmbedded-Core, y un conjunto inicial (default) de metadata. La Figura anterior muestra la relación de Poky en el ecosystema. Poky provee los mecanismos para construir (build) y combinar miles de proyectos de código abierto (opensource).

El jefe es BitBake

La máquina que realiza todo la construcción (build) es BuildBake, este es un planificador de tareas (task scheduler, similar a GNU Make) el cual utiliza como entrada distintos scripts (shell y python).