1 pontos por GN⁺ 2 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • oasis é um pequeno sistema Linux que faz linkagem estática de todo o software do sistema base e segue uma direção mais próxima do BSD do que das distribuições Linux mais familiares
  • Todos os pacotes são compilados com samurai e os manifestos são gerados com scripts em Lua, o que implica um custo inicial alto de empacotamento, mas oferece builds previsíveis e reproduzíveis, além de builds incrementais que atravessam os limites entre pacotes
  • O sistema usa BearSSL como biblioteca de TLS e criptografia, e adota BearSSL em todo o sistema por meio do suporte nativo do libcurl ao BearSSL e do libtls-bearssl
  • O oasis não tem gerenciador de pacotes; em vez disso, você define em uma especificação quais arquivos de quais pacotes devem ser incluídos, e o sistema de build registra a árvore resultante do sistema de arquivos em um repositório git para ser mesclada em / ou obtida em outra máquina
  • Um dos objetivos principais é manter o /etc simples o suficiente para ser entendido por completo e fazer builds com o compilador cproc, que é muito menor e mais rigoroso com o padrão ISO C do que gcc ou clang

Visão geral do oasis

  • oasis é um pequeno sistema Linux, bastante diferente de outros sistemas operacionais baseados em Linux mais conhecidos, seguindo uma direção mais próxima do BSD
  • Todo o software do sistema base usa linkagem estática, incluindo também o servidor de exibição velox e o navegador netsurf
  • Isso usa mecanismos mais simples do que a linkagem dinâmica, elimina problemas de atualização de bibliotecas e cria binários totalmente autocontidos que podem ser copiados com facilidade para outros sistemas

Build e bootstrap

  • Todos os pacotes são compilados com samurai, e os manifestos de build são gerados com scripts em Lua
  • Essa abordagem tem um custo inicial de empacotamento considerável, mas um custo de manutenção pequeno, além de oferecer tempos de build próximos do ideal, builds previsíveis e reproduzíveis, menos dependências em tempo de build e builds incrementais além das fronteiras entre pacotes
  • Para o bootstrap, basta qualquer sistema POSIX com git, lua, curl, utilitário sha256, utilitários padrão de compressão e um compilador cruzado x86_64-linux-musl
  • Isso também facilita a compilação cruzada a partir de sistemas não Linux, como macOS ou OpenBSD

TLS, composição de pacotes e expansão do sistema

  • BearSSL é usado como biblioteca de TLS e criptografia do sistema
  • O BearSSL é muito pequeno e bem escrito, mas não foi amplamente adotado
  • Com o suporte nativo do libcurl ao BearSSL e a implementação alternativa de libtls baseada em BearSSL, libtls-bearssl, o oasis usa BearSSL em todo o sistema
  • Apenas alguns pacotes opcionais ainda exigem LibreSSL
  • O oasis não tem gerenciador de pacotes
  • Em vez disso, você monta uma especificação definindo quais arquivos de quais pacotes serão incluídos no sistema, e o sistema de build registra a árvore resultante do sistema de arquivos em um repositório git
  • Esse resultado pode ser mesclado em / ou obtido em outra máquina
  • Embora o objetivo seja fornecer um sistema completo, há muito software livre que não se encaixa bem nessa proposta; por isso, em vez de criar e manter um repositório com milhares de pacotes, a escolha foi integrar com pkgsrc e nix
  • Isso permite manter o sistema base pequeno e focado, ao mesmo tempo em que expande o sistema com o software necessário

Configuração e direção de implementação em C

  • Uma das diretrizes do oasis é manter o diretório /etc simples o bastante para que o administrador do sistema possa entendê-lo por completo e personalizá-lo adequadamente
  • No conjunto padrão, o arquivo mais complexo é o script de inicialização do sistema /etc/rc.init, que tem apenas 16 linhas
  • Um dos principais objetivos do oasis é conseguir fazer build com o compilador C cproc, que é muito mais rigoroso com o padrão ISO C do que gcc ou clang e tem várias ordens de grandeza a menos em tamanho
  • Esse trabalho ainda está em andamento, mas todos os pacotes centrais e a maioria dos demais pacotes já compilam com sucesso usando cproc

Princípios

  • A complexidade do software deve ser medida incluindo todas as dependências transitivas
  • Os executáveis devem ser estaticamente linkados
  • Os componentes de software devem permitir personalização ou modificação com facilidade
  • O código-fonte dos pacotes deve ser referenciado por URL ou submódulo git, e não incluído diretamente
  • O /etc deve ser simples o suficiente para ser entendido por completo
  • Os patches devem ser bem organizados, ter boas explicações e sempre ser aplicados de forma limpa

Instalação e imagem QEMU

  • O guia de instalação está na wiki
  • O oasis é um projeto ambicioso e ainda há muito trabalho pela frente
  • O usuário deve estar acostumado a compilar o próprio kernel e a ajustar o sistema quando surgirem problemas
  • Há uma imagem QEMU disponível para testar sem instalar diretamente
  • Dentro do arquivo compactado há um sistema de arquivos raiz, um kernel Linux e um script para executar o qemu
  • Também está incluído um README.md com informações de uso; ./run executa no modo gráfico e ./run -s executa no modo serial

Seleção de software incluído

  • O oasis usa implementações menores e mais simples de bibliotecas e ferramentas sempre que possível
  • As principais escolhas são as seguintes
    • musl em vez de glibc
    • sbase em vez de coreutils
    • ubase em vez de util-linux
    • pigz em vez de gzip
    • mandoc em vez de man-db
    • bearssl em vez de openssl
    • oksh em vez de bash
    • sdhcp em vez de dhclient ou dhcpcd
    • vis em vez de vim ou emacs
    • byacc em vez de bison
    • perp e sinit em vez de sysvinit ou systemd
    • netsurf em vez de chromium ou firefox
    • samurai em vez de ninja
    • velox em vez de Xorg
    • netbsd-curses em vez de ncurses
  • Esses pacotes são agrupados em sets lógicos
  • A lista completa pode ser vista no diretório pkg
  • Mesmo que o software desejado não esteja presente, há grande chance de ele poder ser instalado via pkgsrc ou nix

Canais de contato

  • A mailing list está em ~mcf/oasis@lists.sr.ht
  • O canal IRC é #oasis na libera.chat
  • Pode ser usado para perguntas, patches e discussões gerais

1 comentários

 
GN⁺ 2 시간 전
Opiniões no Lobste.rs
  • É impressionante o fato de ser totalmente ligado estaticamente
    não linke o bash com raiva ♪

    • Parece que eles fazem o link do projeto oksh no lugar do bash
  • Lembro de ter olhado este projeto por volta de 2020, pouco antes de o Wayland realmente se firmar
    Já era bem impressionante na época por estar criando uma distribuição totalmente ligada estaticamente que incluía até um servidor de exibição próprio, e é ainda mais legal ver que continua vivo

  • As capturas de tela estão aqui: https://github.com/oasislinux/oasis/wiki
    Seria bom colocar isso no README

  • O fato de ser totalmente ligado estaticamente é bem impressionante
    Quase todos os meus projetos também são ligados estaticamente, mas há exceções na parte gráfica, como servidor X ou OpenGL/Vulkan
    Vale dar uma olhada rápida também na lista de alternativas de bibliotecas/software mais simples proposta pelo Oasis

  • Aprendi muito sobre Linux instalando o Oasis no meu notebook
    Mas é preciso ir preparado, e especialmente configurar o pkgsrc para usar sway ou outro desktop Wayland não é fácil
    A versão suckless do coreutils também não é compatível com muito software, então é bom esperar problemas
    O ponto especialmente positivo foi que era muito fácil depurar e entender todo o espaço de usuário, e como abordagem para criar um sistema reproduzível parece muito menos mágico que o nix

    • Fico feliz que tenha sido uma boa experiência de aprendizado
      O BearSSL ficou muito tempo sem lançamentos, mas ainda recebe commits de vez em quando, inclusive alguns no mês passado
      Porém, ele ainda não suporta TLS 1.3, então foi removido do curl 8.15 no ano passado, e o TLS 1.2 ainda é considerado seguro
      Do lado do curl, também houve a preocupação de que, se há poucos commits recentes e poucas correções de bugs, talvez não possa haver usuários satisfeitos, ao que Thomas respondeu: “desculpe por não conseguir criar bugs suficientes no meu código. Da próxima vez vou tentar fazer de forma mais desleixada”
      O README citado é de uma versão antiga, e na 0.6 o BearSSL é tratado como software em nível beta, com a maior parte dos recursos planejados já implementada, e o uso em produção sendo algo bastante ousado, mas não completamente insano
      Na minha opinião, o padrão de Thomas Pornin para o que ele chama de “software de qualidade beta” é mais alto do que o que a maioria das pessoas considera pronto para produção