- 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
- O objetivo é oferecer um tutorial passo a passo por meio de artigos individuais no blog
-
Bare Bones
-
Interrupts
-
Memory Management
-
Multitasking
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
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
O MOROS parece atender a esses critérios também, então salvei nos favoritos
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
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
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