A empresa Igalia, conhecida por sua participação no desenvolvimento de projetos de código aberto como GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa e freedesktop.org, apresentou o projeto Moonforge, que simplifica a criação e a manutenção de distribuições Linux personalizadas para diversos dispositivos e sistemas embarcados. O conteúdo da distribuição é formado com base em ferramentas de construção e metadados de pacotes dos projetos OpenEmbedded e Yocto. As inovações específicas do projeto são distribuídas sob a licença MIT.
O Moonforge oferece aos desenvolvedores e integradores de sistemas uma estrutura, um conjunto de arquivos de configuração e uma coleção de componentes para a formação de imagens de sistema que podem ser atualizadas de forma atômica, fundamentadas no uso de tecnologias já testadas e amplamente utilizadas na indústria, como yocto, bitbake e kas. Um processo simplificado de instalação de atualizações é suportado para as imagens criadas, garantindo um ciclo prolongado de suporte. O principal objetivo do projeto é fornecer aos desenvolvedores de sistemas embarcados uma ferramenta conveniente, permitindo-lhes focar no desenvolvimento de funcionalidades específicas para seus produtos, sem perder tempo com tarefas relacionadas à criação e manutenção da distribuição.
A imagem do sistema é composta por um conjunto de módulos Yocto prontos. Cada módulo é responsável por uma funcionalidade específica ou por oferecer suporte a uma plataforma de hardware alvo em particular. Por exemplo, há módulos para suporte ao Docker, QEMU ou Podman, gerenciamento de atualizações via RAUC, e formação de interfaces gráficas baseadas em compósitos. servidor Weston, inicialização de uma interface de navegador baseada em Webkit para quiosques de internet e compilações para as placas Raspberry Pi 4 e 5.
São suportados três canais de distribuição de lançamentos: stable (ramo LTS estável), next (ramo em que o próximo lançamento LTS está sendo desenvolvido) e main (ramo experimental em desenvolvimento). Cada ramo está vinculado a sua versão específica do conjunto de componentes Yocto. O ramo estável é atualizado uma vez por mês e corresponde às versões LTS do Yocto.
As atualizações são entregues via OTA (Over-The-Air) usando a ferramenta Mender e são instaladas de forma atômica, substituindo completamente todo o sistema. Dois partições raiz idênticas são criadas no armazenamento — ativa e passiva. A nova atualização é instalada na partição passiva, sem afetar o funcionamento da partição ativa. Após a reinicialização, as partições são trocadas — a partição com a nova atualização torna-se ativa, enquanto a antiga partição ativa é transferida para o modo passivo e aguarda a instalação da próxima atualização. Se algo der errado após uma atualização, a reversão para a versão anterior do sistema é realizada.
Para a criação de imagens do sistema, a ferramenta BitBake é utilizada, enquanto a configuração e a garantia de compilações reprodutíveis são asseguradas pelo kas. Compilações, atualizações, relatórios de vulnerabilidades e metadados SBOM (Software Bill of Materials) são automaticamente coletados e publicados usando sistemas de integração contínua e entrega contínua (CI/CD). A infraestrutura de construção baseada no Moonforge pode ser implantada tanto em ambientes locais servidores, quanto em ambientes de nuvem públicos ou privados.
Para transparência e previsibilidade nos processos de criação de produtos derivados, é aplicada uma separação rigorosa entre componentes upstream e downstream, permitindo que os desenvolvedores adicionem funcionalidade extra sobre o básico, se necessário. A configuração é definida em uma representação declarativa, utilizando o formato YAML, e abrange áreas como a conexão de repositórios externos, ativação de módulos Yocto, gerenciamento de dependências entre os componentes da distribuição, aplicação de patches adicionais e alteração das configurações de sistema aplicadas por padrão.
Fonte: opennet.ru
