La empresa Igalia, conocida por su participación en el desarrollo de proyectos de software libre como GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa y freedesktop.org, ha presentado el proyecto Moonforge, que simplifica la creación y el mantenimiento de distribuciones de Linux personalizadas para diversos dispositivos y sistemas embebidos. La base de la distribución se forma a partir de herramientas de construcción y metadatos de paquetes de proyectos como OpenEmbedded y Yocto. Los aportes específicos del proyecto están disponibles bajo la licencia MIT.
Moonforge ofrece a desarrolladores e integradores de sistemas un marco, un conjunto de archivos de configuración y una colección de componentes para crear imágenes del sistema que se puedan actualizar de forma atómica, basadas en el uso de tecnologías ya probadas y ampliamente utilizadas en la industria, como yocto, bitbake y kas. Las imágenes generadas admiten un proceso simplificado para la instalación de actualizaciones y garantizan un ciclo de mantenimiento prolongado. El objetivo principal del proyecto es proporcionar a los desarrolladores de sistemas embebidos herramientas convenientes que les permitan centrarse en el desarrollo de funcionalidades específicas de su producto, sin perder tiempo en tareas relacionadas con la creación y el mantenimiento de la distribución.
La imagen del sistema se compone de un conjunto de módulos listos de Yocto. Cada módulo se encarga de una funcionalidad específica o del soporte de una plataforma de hardware objetivo concreta. Por ejemplo, se ofrecen módulos para el soporte de Docker, QEMU o Podman, la gestión de actualizaciones a través de RAUC y la creación de una interfaz gráfica basada en compositores. servidores Weston, el lanzamiento de una interfaz de navegador basada en Webkit para quioscos de internet y compilaciones para placas Raspberry Pi 4 y 5.
Se admiten tres canales de distribución de lanzamientos: stable (rama LTS estable), next (rama en la que se desarrolla la siguiente versión LTS) y main (rama experimental en la que se lleva a cabo el desarrollo). Cada rama está vinculada a su propia versión del conjunto de componentes de Yocto. La rama estable se actualiza una vez al mes y corresponde a los lanzamientos LTS de Yocto.
Las actualizaciones se entregan en modo OTA (Over-The-Air) utilizando la herramienta Mender y se instalan de forma atómica mediante la sustitución completa de todo el sistema. En el almacenamiento se crean dos particiones raíz idénticas: activa y pasiva. La nueva actualización se instala en la partición pasiva, sin afectar el funcionamiento de la activa. Después de reiniciar, las particiones cambian de lugar: la partición con la nueva actualización se convierte en activa y la anterior se convierte en pasiva, esperando la instalación de la próxima actualización. Si algo sale mal después de la actualización, se realiza una reversión a la versión anterior del sistema.
Para crear imágenes del sistema se utiliza la herramienta BitBake, mientras que para la formación de configuraciones y la garantía de compilaciones reproducibles se emplea kas. Las compilaciones, actualizaciones, informes de vulnerabilidades y los metadatos SBOM (Software Bill of Materials) se recopilan y publican automáticamente utilizando sistemas de integración continua y despliegue continuo (CI/CD). La infraestructura de compilación basada en Moonforge puede desplegarse tanto en servidores locales como en entornos de nube públicos o privados., tanto en entornos de nube públicos como privados.
Para la transparencia y previsibilidad de los procesos de creación de productos derivados, se aplica una clara separación entre los componentes upstream y downstream en la distribución, lo que permite a los desarrolladores agregar funcionalidades adicionales encima del núcleo básico si es necesario. La configuración se define en una representación declarativa utilizando el formato YAML, abarcando áreas como la conexión a repositorios externos, la activación de módulos Yocto, la gestión de dependencias entre componentes de la distribución, la aplicación de parches adicionales y la modificación de las configuraciones del sistema por defecto.
Fuente: opennet.ru
