126 points par GN⁺ 2025-01-09 | 14 commentaires | Partager sur WhatsApp
  • Ce livre explique comment construire pas à pas un petit système d’exploitation à partir de zéro
  • Les termes système d’exploitation (OS) ou développement de kernel peuvent intimider, mais les fonctions de base d’un OS (en particulier le kernel) sont étonnamment simples
  • Linux aussi a commencé avec 8 413 lignes de code, et même si le kernel Linux d’aujourd’hui est immense, il a débuté comme un petit codebase de projet hobby

Pour commencer

  • Nous allons implémenter en C le changement de contexte de base, la pagination mémoire, le mode utilisateur, un shell en ligne de commande, un pilote de périphérique disque et les opérations de lecture/écriture de fichiers
  • Tout cela est possible en 1 000 lignes de code
  • La partie la plus difficile quand on crée soi-même un OS, c’est le débogage
  • Avant d’avoir implémenté le débogage avec printf, on ne peut pas l’utiliser, et il faut apprendre diverses techniques et compétences de débogage qui n’étaient pas nécessaires en développement applicatif
  • En particulier, lorsqu’on part « de zéro », on se heurte à des parties difficiles comme le processus de boot et la pagination mémoire
  • Mais pas d’inquiétude ! Vous apprendrez aussi comment déboguer un OS
  • Plus le débogage est difficile, plus la satisfaction est grande quand on réussit
  • Plongeons dans le monde fascinant du développement d’OS !

Autres informations

  • Les exemples d’implémentation peuvent être téléchargés sur GitHub.
  • Ce livre est proposé sous licence CC BY 4.0, et les exemples d’implémentation ainsi que le code source sont sous licence MIT
  • Il faut être à l’aise avec le langage C et un environnement de type UNIX ; si vous pouvez exécuter gcc hello.c && ./a.out, vous êtes prêt
  • Ce livre a été écrit à l’origine comme annexe à l’ouvrage japonais « Conception et implémentation d’un microkernel »
  • Bon hacking d’OS !

Table des matières du livre

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. Outro

14 commentaires

 
princox 2025-01-15

Jusqu’ici, je ne connaissais les systèmes d’exploitation qu’à travers des livres, donc c’est vraiment appréciable de pouvoir voir du code réel.

Merci de partager cette excellente ressource.

 
yuhyun 2025-01-13

Merci pour cette excellente ressource !!!!!!!!!

 
reagea0 2025-01-10
  • Ce livre a été rédigé à l'origine comme annexe de l'ouvrage en japonais « Conception et implémentation d'un microkernel ».

Je suis tellement envieux en lisant ça. J'ai l'impression qu'au Japon, il sort vraiment beaucoup d'excellents ouvrages spécialisés. C'est sans doute une question de taille de population, non ?

 
gurugio 2025-01-11

À voir les livres traduits, il ne semble pas y en avoir qui aillent très loin sur le plan technique ; on dirait plutôt qu’ils couvrent simplement des domaines variés. C’est sans doute parce que le marché est plus vaste.

 
romakus 2025-01-10

Merci pour cette excellente ressource.

 
skrevolve 2025-01-09

Essayez d’en créer un vous-même, ou allez jusqu’au niveau où vous le comprenez, et plus tard, voir comment fonctionne un système Linux vous sera utile quand vous manipulerez Linux.

 
gurugio 2025-01-09

Jusqu’au début des années 2000, c’était même assez à la mode que chacun essaie de créer son propre petit noyau, donc je m’y étais essayé moi aussi, et grâce à ça j’ai pu faire du développement sur le noyau Linux pendant quelques années. Il y a aussi eu pas mal de livres sur la création de systèmes d’exploitation publiés en Corée, donc si vous cherchez bien, vous pourrez trouver des ouvrages qui l’expliquent plus en détail.
Si ce n’est pas pour changer de poste dans ce domaine et que c’est juste pour le plaisir, ce n’est pas une mauvaise idée, mais à votre place, aujourd’hui, je recommanderais plutôt des études sur l’IA ou autour de k8s. Même maintenant, on voit encore parfois sur des sites comme KLDP des messages de gens qui disent vouloir devenir développeur kernel, mais quand on lit les commentaires, on ne leur dit tous qu’une chose : partir à l’étranger.

 
bbulbum 2025-01-10

C’est sans doute parce qu’en Corée, il n’y a pas d’entreprise qui investisse au niveau du kernel, j’imagine… ? haha

 
gurugio 2025-01-11

Je ne sais pas vraiment si c’est parce qu’il n’y en a pas besoin qu’on ne le fait pas, ou si c’est parce qu’on ne peut pas le faire, mais en tout cas, ça n’existe pas.

 
coma333 2025-01-09

Merci pour cette excellente ressource.

 
tsboard 2025-01-09

Ce genre de livres, c’est sans doute ce qui ressemble aux manuels secrets d’arts martiaux dont on parle dans les romans de wuxia, non ? haha

 
bbulbum 2025-01-09

C’est vraiment très intéressant. J’avais envie depuis longtemps d’étudier un jour la programmation système, et je me dis que cela pourrait être une bonne première approche pour comprendre, du point de vue de la programmation, comment fonctionne un OS !

 
GN⁺ 2025-01-09
Avis Hacker News
  • L’auteur a écrit un livre pour permettre de créer soi-même un système d’exploitation le temps d’un week-end, et il est possible d’utiliser son langage de programmation préféré comme Rust ou Zig plutôt que C

    • Il n’a gardé que les éléments essentiels, sans chercher à ressembler à UNIX, et il est aussi amusant de réfléchir aux différences avec Linux ou Windows
    • Concevoir un système d’exploitation, c’est comme créer son propre monde
    • Certains paragraphes peuvent donner une impression de traduction automatique, et il demande d’envoyer une PR si vous avez le temps
    • Le contenu est rédigé en Markdown
  • Sur la base d’une expérience de programmation de système d’exploitation "hobby", il vaut mieux ajouter la configuration de débogage GDB le plus tôt possible

    • QEMU dispose d’un serveur GDB intégré, et il faut connecter le client GDB de l’architecture cible (riscv) au serveur GDB de QEMU via le réseau
  • Créer un petit système d’exploitation pour RISC-V semble vraiment chouette

    • Personnellement, quelqu’un dit avoir écrit un noyau pour x86-64 en Nim et être en train de développer un plugin JetBrains
  • Pour les amateurs de Rust, le guide de phil-opp peut être un exercice amusant

    • Lors de la première tentative, seulement environ 5 % étaient compris, mais 2 à 3 ans plus tard, une nouvelle tentative a permis de revoir le sujet point par point
  • Quelqu’un a commencé à étudier RISC-V et note que l’émulateur fourni par le livre qu’il lit est plus simple que QEMU et possède une licence étrange

    • Cela ressemble à un projet universitaire, et il se demande s’il est réellement utilisé
  • Il serait intéressant de comparer avec xv6-riscv

    • Une version HTML du livre xv6 est proposée
  • Les discussions de bas niveau sont toujours intéressantes

    • Une petite coquille a été repérée sur la "page RISC-V 101" : "CPU" est écrit à la place de "ISA"
  • Le plus difficile dans la création d’un système d’exploitation, c’est le débogage

    • En vieillissant, certains pensent que les problèmes qui ne demandent pas d’expertise complexe peuvent être résolus par des essais répétés
  • Deux projets sont mentionnés

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • Bonne ressource, mise de côté pour lecture ce week-end

 
mhcoma 2025-01-14

Écrire un noyau en Nim...
Ça a l’air amusant.