Os desenvolvedores do AerynOS, anteriormente conhecido como SerpentOS, publicaram um artigo detalhado que revela os conceitos e a implementação técnica do projeto, justificando as decisões arquitetônicas adotadas. O líder do projeto, Ikey Doherty, destaca que o AerynOS não é apenas "mais uma distribuição Linux", mas uma plataforma, uma fundação e um conjunto de ferramentas criadas com uma visão clara.
A ideia principal do projeto é formulada na forma de uma pergunta: "E se o sistema operacional se comportar como uma infraestrutura moderna?" O AerynOS é apresentado como a resposta a essa pergunta — um sistema construído do zero, em vez de seguir o modelo tradicional de mutações incorporadas dentro de uma distribuição. O projeto aproveita a experiência dos autores no desenvolvimento de outras distribuições, incluindo Solus e Clear Linux.
Entre as principais decisões técnicas do AerynOS, podemos destacar:
- A utilização da ferramenta LLVM em vez do GNU, adotando libc++ e compiler-rt como padrão. Os desenvolvedores explicam essa escolha não apenas como uma preferência por LLVM, mas como uma decisão estratégica para garantir diagnósticos de qualidade superior, correção e portabilidade dos pacotes. Ao mesmo tempo, o sistema utiliza glibc em vez de musl, o que é uma escolha consciente em favor da compatibilidade e desempenho.
Como indicado no artigo: "A vantagem do glibc sobre o musl em termos de desempenho está bem documentada, especialmente para cargas de trabalho computacionalmente intensivas e aplicativos que requerem desempenho otimizado em multiprocessamento." Os criadores enfatizam que seu objetivo é construir um sistema funcional e utilizável para uma variedade de cenários de aplicação.
- O conceito de "statelessness" (sem estado) — os pacotes são proibidos de conter qualquer arquivo fora do diretório /usr. Como explicam os desenvolvedores, essa abordagem força a garantir valores razoáveis padrão em todos os níveis e elimina "horríveis conflitos de mesclagem tripartida ao atualizar pacotes". Não há conflitos porque tudo em /etc e /var pertence ao usuário, enquanto /usr é exclusivamente da sistema. O conceito foi desenvolvido na época do Clear Linux e Solus, e no AerynOS recebeu um desenvolvimento adicional.
- Atualizações atômicas - cada transação moss é atômica. O sistema rapidamente cria uma nova árvore /usr usando links duros do cache deduplicado. Após a criação e preparação bem-sucedidas, a nova árvore é trocada de forma atômica. A transação preparada é trocada com o diretório real /usr usando renameat2 com a flag RENAME_EXCHANGE. A atualização é realizada completamente ou não é realizada, sem estados intermediários.
- Gerenciamento de inicialização baseado em projetos blsforme e disks-rs. A característica dessa abordagem é que o sistema cria dinamicamente os parâmetros para a linha de comando do kernel, lendo os superblocos dos dispositivos do sistema de arquivos raiz, portanto, não existe um arquivo de configuração em AerynOS que contenha o parâmetro 'root='. Além disso, o identificador de transação moss é codificado na linha de comando do kernel e processado durante a inicialização antecipada no initramfs. 'Em resumo, isso significa que cada kernel está corretamente sincronizado com o respectivo sistema de arquivos raiz, e o rollback é barato, simples e acessível diretamente no menu de inicialização', explicam os desenvolvedores. Outra vantagem é a ausência de /etc/default/grub, e se o ESP for apagado, o moss pode restaurá-lo do zero.
- O formato de pacotes .stone é um formato binário proprietário de pacotes com um cabeçalho agnóstico em relação à versão para garantir mudanças futuras. Cada pacote .stone contém quatro tipos específicos de dados (payload), cada um dos quais pode evoluir independentemente devido ao versionamento:
- Carga de conteúdo (Content payload) - um bloco sequencial de dados deduplicados, ou seja, o próprio conteúdo dos arquivos do pacote.
- Carga de índice (Index payload) - contém deslocamentos para a carga de conteúdo, indexados pelo hash XXH128 do conteúdo (planeja-se migrar para Blake3). Isso permite encontrar e extrair dados de forma eficiente.
- Carga de layout (Layout payload) - descreve o layout proposto do sistema de arquivos ao aplicar o pacote, ou seja, onde e quais arquivos devem ser instalados.
- Metadados (Metadata payload) - uma sequência de registros de metadados tipados e etiquetados, como o nome do pacote, as funcionalidades fornecidas, etc.
A compactação de todas as cargas é feita com o Zstd, garantindo excelente desempenho na descompactação enquanto mantém uma boa taxa de compressão. O processo de "instalação" .stone difere radicalmente de outros sistemas. Em vez de instalar arquivos diretamente, o pacote é cacheado, e seu conteúdo é interligado em um armazenamento comum com endereçamento baseado em conteúdo (CAS). Os metadados e as informações de layout são armazenados separadamente e utilizados na criação de transações. Essa abordagem garante a atomicidade das atualizações e a possibilidade de rollback, uma vez que cada transação cria uma nova raiz em vez de modificar a existente.
Os desenvolvedores observam que a abordagem atual de emulação de gerenciamento imperativo de pacotes é "absolutamente sem sentido" e "praticamente introduz mais erros do que resolve". Como uma nova raiz do sistema de arquivos é criada para cada transação, planeja-se no futuro a criação de um novo grafo para cada transação, abandonando as alterações integradas em favor de uma abordagem declarativa, similar ao Gentoo ou Nix.
Outra explicação interessante refere-se à imutabilidade. Os criadores apontam que muitas vezes o AerynOS é descrito como um SO imutável, mas "isso não é exatamente correto". Embora cada transação resulte em uma nova árvore /usr e as alterações locais não sejam mantidas, o sistema não é imutável no sentido de acesso somente leitura. No futuro, planeja-se a implementação de verdadeira imutabilidade do sistema sem a necessidade de reinicialização usando erofs e overlayfs.
Atualmente, o AerynOS está em desenvolvimento ativo, já lançando imagens ISO com o ambiente GNOME, adequado para jogos (suporte a drivers NVIDIA, Steam, Flatpak) e com usuários reais destacando a estabilidade e inovação do sistema. Segundo os desenvolvedores, o projeto está em estado alfa e não está isento de problemas, mas já representa um sistema coeso que "simplesmente funciona."
Fonte: opennet.ru
