12 pontos por GN⁺ 2024-01-09 | 3 comentários | Compartilhar no WhatsApp

Introdução ao Motūrus OS

  • O projeto Motūrus desenvolve o MotūrusOS, um sistema operacional simples, rápido e seguro para a nuvem.
  • O Motūrus OS é um novo sistema operacional voltado para workloads baseadas em máquinas virtuais, usado em servidores web, serverless, cache de borda e mais.

Por que o Motūrus OS?

  • Atualmente, a maioria das cargas de trabalho virtualizadas em produção roda em Linux.
  • O Linux tem muitos recursos avançados, mas também traz algumas complexidades que o tornam menos ideal para workloads virtualizadas:
    • O Linux é otimizado para bare metal, o que o torna ineficiente quando usado dentro de VMs.
    • O Linux é difícil de usar.
    • Historicamente, o Linux não tem sido muito seguro.
  • Um novo sistema operacional focado em workloads virtualizadas pode ser muito mais simples e seguro que o Linux, além de igualar ou superar o Linux em desempenho e eficiência.

O que é o Motūrus OS?

  • O Motūrus OS é um sistema operacional baseado em microkernel, construído em Rust e voltado exclusivamente para workloads virtualizadas.
  • Atualmente, ele oferece suporte a máquinas virtuais x64 baseadas em KVM e pode rodar no Qemu ou no Cloud Hypervisor.
  • Rust é a linguagem central do Motūrus OS: não apenas a implementação, mas também a ABI é fornecida em Rust.

O que já funciona

  • No momento, a maioria dos subsistemas opera em modo POC/MVP, mas já é possível executar tarefas como um servidor web.
  • Especificamente, os seguintes recursos funcionam:
    • Boot em cerca de 200 ms via MBR (Qemu) ou PVH (Cloud Hypervisor).
    • Microkernel himem.
    • Escalonamento: round-robin multiprocessador simples (SMP); o escalonamento do kernel é cooperativo.
    • Gerenciamento de memória: atualmente só há suporte a páginas de 4K; a stack é protegida; page faults no espaço do usuário são tratados corretamente.
    • Subsistema de I/O (em espaço do usuário): drivers VirtIO-BLK e VirtIO-NET, dois sistemas de arquivos simples, rede baseada em smoltcp (apenas TCP suportado).
    • Espaço do usuário: múltiplos processos, preempção, threads, TLS, e grande parte da biblioteca padrão do Rust foi portada.
    • Um shell simples em estilo Unix é fornecido.

O que não funciona

  • A maior parte ainda não está pronta para uso em produção.
  • Nenhuma auditoria de segurança foi realizada.
  • É fácil encontrar pânicos de "not implemented" no sys-io (subsistema de I/O em espaço do usuário).
  • Especificamente, os seguintes recursos não funcionam:
    • Sistema de arquivos: grande parte da API std::fs do Rust foi implementada como POC, mas precisa ser reimplementada usando I/O assíncrono.
    • Rede: std::net::TcpStream está em grande parte implementado, mas outros protocolos ainda não foram implementados.
    • Ecossistema além da biblioteca padrão do Rust: alguns crates podem ser compilados e usados com pequenos ajustes, mas crates que dependem de runtimes assíncronos como Tokio atualmente não compilam.

Como compilar/executar o Motūrus OS?

  • Consulte o documento docs/build.md.

Agradecimentos

  • Um grande agradecimento a Philipp Oppermann, que escreveu uma série de posts sobre como escrever um SO em Rust. Isso inspirou muitas pessoas a experimentar nessa área.

Opinião do GN⁺

  • Abordagem inovadora: o Motūrus OS é um novo sistema operacional especializado em ambientes virtualizados, buscando resolver a complexidade e a ineficiência do Linux.
  • Adoção de Rust: Rust é uma linguagem focada em segurança de memória e desempenho, o que deve contribuir para a segurança e a eficiência do Motūrus OS.
  • Contribuição para a comunidade de desenvolvedores: este projeto pode ajudar desenvolvedores interessados em criação de sistemas operacionais a explorar novas possibilidades e ir além das limitações existentes.

3 comentários

 
ing03201 2024-01-09

Também estou acompanhando o blog writing an os in rust, mas já está surgindo movimento por causa dele!
Parece ser um ótimo texto.

 
GN⁺ 2024-01-09
Comentários no Hacker News
  • Opinião do desenvolvedor/autor do projeto:

    • Agradece o interesse e a discussão sobre o projeto.
    • Há preocupações sobre viabilidade de sobrevivência no longo prazo, suporte e compatibilidade de compiladores e binários.
    • Acredita que, sem comunidade, o projeto não pode ter sucesso, mas que os benefícios potenciais de um projeto como o Motor OS podem eventualmente levar a um novo sistema operacional amplamente usado.
    • Aponta problemas do Linux dentro de máquinas virtuais (e às vezes fora delas) e diz que os desenvolvedores do Linux não parecem se concentrar o suficiente em resolvê-los.
    • Diz não entender a preocupação com instabilidade de compiladores e compatibilidade binária, mencionando que os kernels Linux mais recentes podem ser compilados com várias toolchains GCC ou LLVM, e que binários antigos também rodam sem problemas.
    • Afirma estar pronto para responder perguntas adicionais.
  • Explicação sobre a abordagem "Rust-first":

    • "Rust-first" significa que não só o microkernel e os drivers são implementados em Rust, mas também que os programas de espaço de usuário, por enquanto, só podem ser escritos em Rust.
    • Tecnicamente, seria possível fazer engenharia reversa da ABI baseada em Rust e da toolchain Rust fornecida para escrever apps para o Motor OS em outras linguagens, como C, mas isso exigiria um certo trabalho.
    • Explica que programas Rust padrão podem usar a biblioteca padrão do Rust e ser compilados e executados sem FFI.
  • Curiosidade sobre por que um kernel pequeno leva 200 ms em computadores modernos:

    • É necessário inicializar metadados das páginas de memória, montar o sistema de arquivos, iniciar o processo init etc., mas acha que tudo isso deveria acontecer em poucos microssegundos.
    • Questiona se o host leva tempo para preparar os recursos, por exemplo, se há alguma parte lenta no QEMU e no KVM.
  • Opinião de que gostaria de ver um kernel async-first escrito em Rust:

    • Questiona se um kernel async-first é particularmente difícil ou se não parece valioso, ou se simplesmente ninguém está tentando.
    • Menciona que, ao acompanhar a série de OS em Rust de Phil Oppermann, sabe que isso é possível, mas que os OS recentes baseados em Rust não parecem tentar isso.
  • Opinião que relembra uma fala passada de Linus Torvalds sobre concorrência ao Linux:

    • Recorda que, ao ser perguntado se tinha medo da concorrência, Torvalds respondeu que gosta de escrever drivers de dispositivo e que não teria medo da concorrência até aparecer uma pessoa jovem e apaixonada que também goste disso.
  • Opinião demonstrando interesse em projetos como o Motor OS e desejando que o desenvolvimento continue:

    • Expressa que muitos projetos como o Motor OS fracassaram, então já é difícil se empolgar.
    • Menciona que substituir o Linux em usos específicos, como a nuvem, é algo muito difícil.
  • Opinião de que Docker, Nix OS e "serverless" existem por causa da complexidade do Linux:

    • Explica que Docker e NixOS existem por causa dos problemas de gerenciamento de pacotes no espaço de usuário, e que serverless existe porque as empresas querem pagar por computação conforme a demanda.
  • Opinião de que inicialmente teve uma atitude cética em relação à nova tecnologia, mas, pensando melhor, considera atraentes os ganhos de eficiência e segurança obtidos ao remover camadas desnecessárias:

    • Diz ter uma abordagem saudável em relação a novas tecnologias e reconhece que os ganhos de eficiência e segurança são atraentes.
  • Opinião de que o Motor OS parece competir com Docker e afins:

    • Aponta que o Motor OS parece competir mais diretamente com tecnologias como Docker do que com o Linux em si.
    • Gostaria que a seção "Por quê?" abordasse por que alguém deveria escolher o Motor OS em vez de Docker e afins.
  • Opinião de que começar um novo sistema operacional não é difícil, mas dar suporte a ele pelos próximos 50 anos é muito difícil:

    • Enfatiza que escrever um novo sistema operacional não é difícil, mas sustentá-lo ao longo de um longo período é algo muito difícil.
 
ahwjdekf 2024-01-10

A seção "recursos que não funcionam" é realmente um espetáculo à parte. Projeto de brinquedo