7 points par GN⁺ 2024-09-15 | 1 commentaires | Partager sur WhatsApp
  • Le dépôt Blog OS contient le code source utilisé dans la série Writing an OS in Rust sur os.phil-opp.com
  • Le code de chaque article se trouve dans une branche git distincte, ce qui permet de consulter les états intermédiaires après avoir suivi chaque étape
  • À l’heure actuelle, les articles de la deuxième édition sont organisés dans les catégories Bare Bones, Interrupts, Memory Management et Multitasking, et le code de l’article le plus récent se trouve dans la branche post-12
  • Les noms de branche suivent le format post-XX ; par exemple, post-03 correspond au code de l’article VGA Text Mode et post-07 à celui de Hardware Interrupts
  • La première édition n’est plus maintenue, mais reste consultable ; le code du projet utilise une licence au choix entre Apache-2.0 ou MIT, à l’exception du dossier blog/content

Objectif du dépôt Blog OS

  • Ce dépôt fournit le code source de la série Writing an OS in Rust
  • Les questions peuvent être posées en ouvrant une issue GitHub ou via le chat Gitter

Structure du code par article

  • Le code de chaque article se trouve dans une branche git distincte
    • Cela permet de consulter les états intermédiaires après avoir suivi l’article
    • Le code de l’article le plus récent se trouve dans post-12
  • La branche de chaque article peut être trouvée via le lien (source code) dans la liste des articles ci-dessous
  • Les noms de branche utilisent le format post-XX
    • post-03 : VGA Text Mode
    • post-07 : Hardware Interrupts
  • Pour la méthode de build, il faut se référer au README de chaque branche
  • Il est possible d’utiliser git worktree pour checkout une branche spécifique dans un sous-répertoire
git worktree add code post-10
  • La commande ci-dessus crée un sous-répertoire code contenant le code du 10e article, Heap Allocation

Liste actuelle des articles de l’édition

Première édition

  • Le blog actuel correspond à la deuxième édition
  • La première édition est ancienne et n’est plus maintenue, mais peut encore être utile
  • La première édition comprend des articles dans les catégories Bare Bones, Memory Management, Exceptions et Additional Resources

Licence et contributions

  • À l’exception du dossier blog/content, le projet peut être utilisé, au choix de l’utilisateur, sous Apache License 2.0 ou sous licence MIT
  • Pour la licence du dossier blog/content, il faut se référer à blog/content/README.md
  • Sauf indication contraire explicite, toute contribution soumise intentionnellement pour inclusion sera couverte par cette double licence, sans conditions supplémentaires, conformément à la définition d’Apache-2.0

1 commentaires

 
GN⁺ 2024-09-15
Avis sur Hacker News
  • J’ai lu la 2e édition jusqu’au bout il y a quelques années, et c’était vraiment révélateur.
    Les explications sur le développement de systèmes d’exploitation sont excellentes, mais c’était aussi très utile comme ressource pour approfondir Rust après avoir lu le livre Rust.
    L’auteur comprend très bien les idiomes de Rust, donc comparer sa façon d’exprimer les choses en code avec celle que j’aurais utilisée m’a beaucoup appris ; en particulier, async-await in Rust, qui explique comment les futures sont implémentés en Rust, est ce que j’ai vu de mieux sur ce sujet.
    J’aimerais que Phil retrouve l’élan nécessaire pour reprendre le travail sur une 3e édition basée sur EFI. À en juger par les commits de la branche Git, cela semble à l’arrêt, et même après l’avoir sponsorisé sur GitHub pendant environ un an, j’étais toujours déçu de constater son absence des articles « This Month In Rust OSDev ».
    Cela dit, la 2e édition reste une excellente ressource pour passer du temps à développer le week-end, et l’effort fourni se ressent clairement.

  • Après avoir terminé ce tutoriel il y a cinq ans, j’ai commencé à travailler sur MOROS, et je le recommande vivement à toute personne intéressée par Rust et le développement de systèmes d’exploitation.
    Phil y a consacré énormément d’efforts, et ça se voit. Le projet couvre beaucoup de sujets, et on peut ensuite continuer avec l’osdev wiki.
    MOROS : http://moros.cc, https://github.com/vinc/moros

    • Ça a l’air assez chouette. Jusqu’ici, mon projet préféré était xv6, parce que sa base de code est suffisamment petite pour être comprise en quelques semaines, qu’il se construit avec le GCC standard fourni par le gestionnaire de paquets, sans avoir à compiler un GCC personnalisé depuis les sources, et qu’il dispose aussi d’un espace utilisateur.
      MOROS semble aussi remplir ces critères, donc je l’ai mis en favori.
    • Pas de TLS sur http://moros.cc ? :(
    • Je suis abonné au flux RSS depuis un moment, et MOROS a vraiment l’air d’un projet très chouette.
      Cela dit, pour une raison quelconque, il ne démarre pas chez moi dans QEMU, donc je ne l’ai pas encore essayé ; je pense que le problème vient probablement de mon côté plutôt que du système d’exploitation lui-même.
  • Après m’être plongé en profondeur dans Rust et le développement de systèmes d’exploitation, j’ai découvert cette ressource aujourd’hui et j’ai été impressionné par la qualité du contenu.
    On y apprend beaucoup sur l’histoire et la conception des systèmes d’exploitation, tout en assimilant naturellement des éléments de Rust. Phil a vraiment fait un excellent travail.

  • Je reviens tout juste de Rustconf, et il semblait y avoir environ cinq versions majeures de systèmes d’exploitation côté Rust, dont beaucoup avec un accent particulier sur le temps réel.
    Cela dit, elles ne sont pas toutes open source.

    • Parmi les principaux systèmes d’exploitation temps réel (RTOS), on trouve Tock-OS, Oxid-OS (une version orientée sécurité de Tock-OS, dans un rôle comparable à freertos/safertos) et Hubris d’Oxide Computers ; Embassy et RTIC sont des frameworks couramment utilisés pour la planification et la gestion des ressources sur des systèmes bare metal, mais ce ne sont pas des RTOS au sens traditionnel.
      Il en existe aussi d’autres, plus de niche ou non publics.
      Du côté des systèmes d’exploitation traditionnels, c’est-à-dire non temps réel, Redox est le représentant principal, et il existe aussi de nombreux systèmes d’exploitation de recherche, expérimentaux ou éducatifs, y compris Blog OS de ce guide/billet.
  • Je recommande particulièrement la première édition de ces articles.
    La version actuelle prend en charge tout le bootloading via un crate dédié, ce qui donne l’impression qu’elle aide un peu trop.

    • J’aime l’idée qu’il existe une façon de sauter la partie bootloading.
      Ce commentaire m’a donné envie d’essayer pour de vrai. J’aimerais créer un petit système d’exploitation pour le plaisir, mais je n’aime pas la partie où il faut passer par des incantations magiques pour arriver à un état de machine correct permettant de faire quelque chose.
      Bien sûr, ce n’est pas forcément une mauvaise chose ; chacun apprécie simplement des aspects différents.
  • C’est grâce à cette ressource que je me suis mis à Rust en 2021, et je suis vraiment reconnaissant qu’elle existe.

  • Les articles de Phil sur le développement de systèmes d’exploitation sont toujours agréables à lire.

  • Il paraît qu’il interviendra à la conférence GOSIM le mois prochain.
    https://china2024.gosim.org/speakers#philipp-oppermann
    J’aimerais pouvoir le rencontrer et discuter avec lui.

  • https://harvey-os.org/ a été mis à la retraite, et l’équipe travaille désormais sur ce projet : https://github.com/r9os/r9

  • Je ne suis pas développeur professionnel, mais quand je vois l’expression « écrire X au-dessus de Y », ça me fait penser au mème « But why? » de Ryan Reynolds : https://screenrant.com/ryan-reynolds-but-why-gif-harold-kuma...
    Si c’est à des fins d’apprentissage, je pense qu’il n’y a aucun problème. Plus on code, meilleur on devient.
    Au passage, MOROS a un projet et une page qui ont l’air très chouettes.