Écrire un système d’exploitation en Rust
(github.com/phil-opp)- Ce dépôt contient le code source de la série Writing an OS in Rust proposée sur os.phil-opp.com
- En cas de question, vous pouvez ouvrir une issue ou discuter sur Gitter
Emplacement du code
- Le code de chaque article se trouve dans une branche git distincte
- Il est possible de consulter l’état intermédiaire après chaque article
- Le code de l’article le plus récent est disponible ici
- Vous pouvez trouver la branche de chaque article en suivant le lien
(source code)dans la liste des articles - Les branches sont nommées au format
post-XX(XXétant le numéro de l’article) - Exemple : l’article VGA Text Mode correspond à
post-03, et Hardware Interrupts àpost-07 - Pour les instructions de build, consultez le Readme de la branche concernée
- Vous pouvez utiliser git worktree pour checkout une branche dans un sous-répertoire
git worktree add code post-10 - La commande ci-dessus crée un sous-répertoire nommé
codeet y place le code du 10e article (« Heap Allocation »)
Articles
- L’objectif de ce projet est de proposer un tutoriel pas à pas à travers des articles de blog individuels
- Les articles actuellement disponibles sont les suivants
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)
Articles de la première édition
- La version actuelle du blog est la deuxième édition, et la première édition n’est plus maintenue
- Les articles de la première édition peuvent néanmoins rester utiles
- La liste des articles est la suivante
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)
Licence
- Ce projet est distribué, à l’exception du dossier
blog/content, sous l’une des licences suivantes- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
- Pour la licence du dossier
blog/content, voirblog/content/README.md
Contribution
- Sauf mention explicite du contraire, toute contribution soumise intentionnellement est incluse sous cette double licence, conformément à la définition de la licence Apache-2.0 ci-dessus
Résumé de GN⁺
- Ce projet propose un tutoriel expliquant pas à pas comment écrire un système d’exploitation en Rust
- Chaque article traite d’un sujet indépendant et l’explique avec des exemples de code
- C’est une ressource très utile pour les personnes intéressées par le développement de systèmes d’exploitation
- Il permet d’apprendre à développer un système d’exploitation en tirant parti de la sûreté et des performances de Rust
- Un autre projet offrant des fonctionnalités similaires est
Redox OS
1 commentaires
Commentaires sur Hacker News
J’ai terminé la deuxième édition il y a quelques années et j’y ai beaucoup appris
J’ai commencé à travailler sur MOROS après avoir terminé le tutoriel il y a 5 ans
Au lieu d’écrire un OS en Rust, il faudrait créer une plateforme de données capable d’exécuter du DML/DDL
J’ai découvert cette ressource après avoir exploré en profondeur Rust et le développement d’OS
C’est grâce à cette ressource que j’ai commencé Rust en 2021
Les articles de Phil sur le développement d’OS sont toujours excellents à lire
L’équipe de Harvey OS travaille désormais sur le projet R9OS
Je recommande particulièrement les articles de l’édition originale
Je reviens de Rustconf, et il y a environ cinq sorties majeures d’OS axées sur les systèmes d’exploitation temps réel
Une autre bonne ressource consiste à créer un OS RISC-V avec Rust