7 pontos por GN⁺ 2024-09-15 | 1 comentários | Compartilhar no WhatsApp
  • O repositório Blog OS contém o código-fonte usado na série Writing an OS in Rust de os.phil-opp.com
  • O código de cada artigo fica em uma branch git separada, permitindo conferir o estado intermediário após acompanhar o artigo
  • Atualmente, os artigos da segunda edição estão organizados nas categorias Bare Bones, Interrupts, Memory Management e Multitasking, e o código do artigo mais recente está na branch post-12
  • Os nomes das branches seguem o formato post-XX; por exemplo, post-03 é o código do artigo VGA Text Mode, e post-07 é o do artigo Hardware Interrupts
  • A primeira edição não é mais mantida, mas ainda pode servir de referência; o código do projeto, exceto a pasta blog/content, usa uma licença à escolha entre Apache-2.0 ou MIT

Objetivo do repositório Blog OS

  • Este repositório fornece o código-fonte da série Writing an OS in Rust
  • Dúvidas podem ser feitas abrindo uma issue no GitHub ou pelo chat no Gitter

Estrutura do código por artigo

  • O código de cada artigo fica em uma branch git separada
    • É possível conferir o estado intermediário após seguir o artigo
    • O código do artigo mais recente está em post-12
  • A branch de cada artigo pode ser encontrada no link (source code) da lista de artigos abaixo
  • Os nomes das branches usam o formato post-XX
    • post-03: VGA Text Mode
    • post-07: Hardware Interrupts
  • Para instruções de build, consulte o README de cada branch
  • É possível usar git worktree para fazer checkout de uma branch específica em um subdiretório
git worktree add code post-10
  • O comando acima cria o subdiretório code, contendo o código do 10º artigo, Heap Allocation

Lista de artigos da edição atual

Primeira edição

  • O blog atual é a segunda edição
  • A primeira edição está antiga e não é mais mantida, mas ainda pode ser útil
  • A primeira edição inclui artigos nas categorias Bare Bones, Memory Management, Exceptions e Additional Resources

Licença e contribuições

  • O projeto, exceto a pasta blog/content, pode ser usado, à escolha do usuário, sob a Apache License 2.0 ou a MIT license
  • Para a licença da pasta blog/content, consulte blog/content/README.md
  • Salvo indicação em contrário, contribuições enviadas intencionalmente para inclusão serão aplicadas, conforme a definição da Apache-2.0, à licença dupla acima, sem termos adicionais

1 comentários

 
GN⁺ 2024-09-15
Comentários do Hacker News
  • Alguns anos atrás, li a 2ª edição até o fim, e foi realmente esclarecedora
    A explicação sobre desenvolvimento de sistemas operacionais é boa, mas também foi útil como material para aprender mais Rust depois de ler o livro de Rust
    O autor entende bem os idiomatismos de Rust, então havia muito a aprender vendo como ele expressava as coisas em código em comparação com a forma como eu teria escrito; em especial, async-await in Rust, que explica como futures são implementados em Rust, foi o melhor material que já vi sobre esse tema
    Espero que Phil recupere a motivação e continue trabalhando na 3ª edição baseada em EFI. Pelos commits no branch do Git, parece que parou, e também fui patrocinador no GitHub por cerca de um ano, mas ficava triste sempre que via que ela estava ausente dos posts “This Month In Rust OSDev”
    Ainda assim, a 2ª edição é um excelente material para passar o tempo de desenvolvimento no fim de semana, e dá para sentir claramente o esforço investido nela

  • Terminei este tutorial há 5 anos e depois comecei a trabalhar no MOROS; recomendo muito para quem se interessa por Rust e desenvolvimento de sistemas operacionais
    Phil se esforçou muito, e isso fica evidente. O projeto cobre bastante coisa, e depois dá para continuar pela osdev wiki
    MOROS: http://moros.cc, https://github.com/vinc/moros

    • Parece bem legal. Até agora, xv6 era o projeto de que eu mais gostava, porque a base de código é pequena o suficiente para entender em algumas semanas, dá para compilar com o GCC padrão fornecido pelo gerenciador de pacotes, sem precisar compilar um GCC customizado a partir do código-fonte, e também tem espaço de usuário
      O MOROS parece atender a esses critérios também, então salvei nos favoritos
    • http://moros.cc não tem TLS? :(
    • Assino o feed RSS há bastante tempo, e o MOROS parece um projeto realmente muito legal
      Mas, por algum motivo, ele não inicia no QEMU para mim, então ainda não consegui testá-lo; acho mais provável que seja um problema do meu lado do que do próprio sistema operacional
  • Depois de mergulhar fundo em Rust e em desenvolvimento de sistemas operacionais, encontrei este material hoje e fiquei impressionado com a qualidade do conteúdo
    Você aprende bastante sobre a história e o design de sistemas operacionais e, ao mesmo tempo, absorve elementos de Rust de forma natural. Phil fez um trabalho excelente

  • Acabei de voltar da Rustconf, e parecia haver cerca de cinco lançamentos importantes de sistemas operacionais em Rust, muitos deles especialmente focados em tempo real
    Só que nem todos são open source

    • Entre os principais sistemas operacionais de tempo real (RTOS) estão Tock-OS, Oxid-OS (uma versão de segurança do Tock-OS, ocupando uma posição parecida com freertos/safertos) e Hubris, da Oxide Computers; Embassy e RTIC são frameworks comumente usados em sistemas bare metal para escalonamento e gerenciamento de recursos, mas não são RTOS tradicionais
      Há ainda outros mais de nicho ou não publicados
      Do lado dos sistemas operacionais tradicionais, isto é, não em tempo real, o Redox é o representante principal, e também há muitos sistemas operacionais de pesquisa, experimentais e educacionais, incluindo o Blog OS deste guia/post
  • Recomendo especialmente a primeira edição destes artigos
    A edição atual usa um crate dedicado para cuidar de todo o bootloading, então parece que ajuda demais

    • Gosto de existir uma forma de pular a parte de bootloading
      Este comentário me deu vontade de realmente tentar. Quero criar um pequeno sistema operacional por diversão, mas não gosto da parte em que é preciso passar por procedimentos que parecem encantamentos mágicos para chegar a um estado de máquina razoável em que dê para fazer alguma coisa
      Claro que isso não é ruim; é só que pessoas diferentes gostam de partes diferentes
  • Foi graças a este material que comecei com Rust em 2021, e sou muito grato por existirem recursos assim

  • Os posts do Phil sobre desenvolvimento de sistemas operacionais são sempre bons de ler

  • Dizem que ele vai palestrar na conferência GOSIM no mês que vem
    https://china2024.gosim.org/speakers#philipp-oppermann
    Seria ótimo poder encontrá-lo pessoalmente e conversar

  • https://harvey-os.org/ foi aposentado, e a equipe agora está trabalhando neste projeto: https://github.com/r9os/r9

  • Não sou desenvolvedor profissional, mas quando vejo a expressão “escrever X em cima de Y”, lembro do meme “But why?” do Ryan Reynolds: https://screenrant.com/ryan-reynolds-but-why-gif-harold-kuma...
    Se for para fins de aprendizado, acho totalmente válido. Quanto mais você programa, melhor fica
    Além disso, o MOROS parece ter um projeto e uma página muito legais