Escrevendo um sistema operacional em Rust
(github.com/phil-opp)- Este repositório inclui o código-fonte da série Writing an OS in Rust disponível em os.phil-opp.com
- Se tiver dúvidas, você pode abrir uma issue ou conversar no Gitter
Localização do código
- O código de cada post está em uma branch git separada
- É possível verificar o estado intermediário após cada post
- O código do post mais recente pode ser visto aqui
- Na lista de posts, siga o link
(source code)para encontrar a branch de cada post - As branches são nomeadas no formato
post-XX(XXé o número do post) - Ex.: o post VGA Text Mode é
post-03, e Hardware Interrupts épost-07 - Para instruções de build, consulte o Readme da branch correspondente
- É possível usar
git worktreepara fazer checkout de uma branch em um subdiretóriogit worktree add code post-10 - O comando acima cria um subdiretório chamado
codee inclui o código do 10º post ("Heap Allocation")
Posts
- O objetivo deste projeto é oferecer um tutorial passo a passo em posts de blog individuais
- Atualmente, há os seguintes posts
Bare Bones:
- A Freestanding Rust Binary (source code)
- A Minimal Rust Kernel (source code)
- VGA Text Mode (source code)
- Testing (source code)
Interrupts:
- CPU Exceptions (source code)
- Double Faults (source code)
- Hardware Interrupts (source code)
Memory Management:
- Introduction to Paging (source code)
- Paging Implementation (source code)
- Heap Allocation (source code)
- Allocator Designs (source code)
Multitasking:
- Async/Await (source code)
Posts da primeira edição
- A versão atual do blog é a segunda edição, e a primeira edição não recebe mais manutenção
- Os posts da primeira edição ainda podem ser úteis
- A lista de posts é a seguinte
Bare Bones:
- A Minimal x86 Kernel (source code)
- Entering Long Mode (source code)
- Set Up Rust (source code)
- Printing to Screen (source code)
Memory Management:
- Allocating Frames (source code)
- Page Tables (source code)
- Remap the Kernel (source code)
- Kernel Heap (source code)
Exceptions:
- Handling Exceptions (source code)
- Double Faults (source code)
Additional Resources:
- Cross Compile Binutils
- Cross Compile libcore
- Set Up GDB
- Handling Exceptions using Naked Functions
- Catching Exceptions (source code)
- Better Exception Messages (source code)
- Returning from Exceptions (source code)
Licença
- Este projeto é licenciado, exceto pela pasta
blog/content, sob uma destas opções- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
- Para a licença da pasta
blog/content, consulteblog/content/README.md
Contribuição
- Salvo indicação explícita em contrário, qualquer contribuição enviada intencionalmente para inclusão será dual-licenciada como acima, conforme definido na licença Apache-2.0
Resumo do GN⁺
- Este projeto oferece um tutorial passo a passo sobre como escrever um sistema operacional em Rust
- Cada post aborda um tema independente e é explicado com exemplos de código
- É um material muito útil para quem tem interesse em desenvolvimento de sistemas operacionais
- Você pode aprender a desenvolver um sistema operacional aproveitando a segurança e o desempenho do Rust
- Um projeto semelhante com funcionalidades parecidas é o
Redox OS
1 comentários
Comentários no Hacker News
Completei a segunda edição há alguns anos e aprendi muita coisa
Depois de concluir o tutorial há 5 anos, comecei a trabalhar no MOROS
Em vez de escrever um SO em Rust, deveríamos criar uma plataforma de dados capaz de executar DML/DDL
Depois de explorar Rust e desenvolvimento de SO a fundo, encontrei este material
Foi graças a este material que comecei com Rust em 2021
Os textos do Phil sobre desenvolvimento de SO são sempre ótimas leituras
A equipe do Harvey OS agora está trabalhando no projeto R9OS
Recomendo especialmente os posts da edição original
Voltei da Rustconf, e há cerca de cinco grandes lançamentos de SO com foco em sistemas operacionais de tempo real
Outro bom material é sobre criar um SO RISC-V usando Rust