Conheça o SkiffOS, um sistema Linux mínimo para contêineres incorporados. Confira os detalhes desse interessante sistema.
Processadores Linux embarcados são cada vez mais usados para tarefas de computação em tempo real, como robótica e Internet das Coisas (IoT).
Esses aplicativos exigem um comportamento robusto e reproduzível do sistema operacional host, geralmente obtido por meio de firmware imutável armazenado em memória somente leitura.
E é exatamente neste cenário que o SkiffOS se destaca.
SkiffOS, um sistema Linux mínimo para contêineres incorporados
O SkiffOS atende a esses requisitos com um sistema GNU/Linux compilado cruzado mínimo otimizado para hospedar distribuições e aplicativos em contêineres e um sistema de camadas de configuração para a ferramenta de compilador cruzado incorporado Buildroot que redireciona automaticamente as configurações do sistema para qualquer plataforma ou dispositivo.
Essa abordagem separa claramente o suporte de hardware dos aplicativos.
O sistema host e os contêineres são atualizados de forma independente e submetidos a backup pelo ar (OTA).
Em outras palavras, esse é um sistema operacional Linux mínimo rodando em RAM, construído com buildroot, capaz de executar contêineres em várias plataformas de hardware, desde Raspberry Pi, ODROID, Orange Pi e NVIDIA Jetson SBCs até PCs desktop, laptops, telefones, incluindo o PinePhone, VMs na nuvem e muito mais. O hardware RISC-V é apenas a mais recente adição.
Christian Stewart, desenvolvedor do SkiffOS, destaca cinco características da solução:
- Familiar: usa a linguagem Makefile e KConfig simples para configuração.
- Flexível: suporta qualquer distribuição de SO dentro de containers com ssh drop-in.
- Portátil: replique exatamente o mesmo sistema em qualquer hardware ou arco.
- Confiável: o sistema host mínimo somente leitura (~ 100 KB) na RAM inicializa de maneira confiável todas as vezes.
- Reprodutível: compilações offline e determinísticas para comportamento reproduzível.
O SkiffOS adiciona um sistema de camadas de configuração ao compilador cruzado Buildroot , o que facilita o redirecionamento de aplicativos para um novo hardware.
As camadas são mescladas conforme especificado na variável SKIFF_CONFIG
de ambiente separada por vírgulas. Como exemplo básico: SKIFF_CONFIG=pi/4,core/gentoo
inicia o Gentoo em um Raspberry Pi 4 em um container Docker.
A configuração padrão produz um sistema operacional host mínimo (~100Mb) na RAM com SSH e conectividade de rede e inclui um conjunto abrangente de ferramentas de depuração. O sistema operacional host pode ser facilmente atualizado remotamente com o script push_image, usando rsync.
A camada “skiff/core” habilita o Docker (“apps/docker”) e um ambiente padrão baseado no Ubuntu com um ambiente de desktop gráfico completo. Outros, incluindo “core/gentoo” e “core/dietpi” estão disponíveis.
A maioria dos dispositivos Linux tem um conjunto exclusivo de requisitos para pacotes de suporte de kernel, firmware e hardware. O sistema operacional host SkiffOS separa o suporte específico de hardware dos ambientes de usuário em contêiner, simplificando o gerenciamento de atualizações em várias combinações de hardware.
Há uma tabela no repositório Github do projeto com as versões U-boot e kernel Linux suportadas por uma determinada plataforma de hardware e no caso do Sipeed Nezha, seria U-boot 2022.04 e Linux “sm-5.14-rc4”.
SkiffOS foi testado com Docker e Alpine Linux na placa Allwinner D1, mas outras predefinições incluem Debian e Gentoo, entre outras. Você encontrará mais detalhes, incluindo o código-fonte e instruções para começar, na página do software no Github.