4 points par GN⁺ 2025-04-27 | 1 commentaires | Partager sur WhatsApp
  • RetrOS-32 est un projet de système d’exploitation hobby 32 bits basé sur l’architecture i386
  • Il propose des fonctions graphiques, multitâches et réseau, et a aussi été testé sur du matériel réel
  • Il est écrit en C, C++ et assembleur, et prend en charge la compilation multiplateforme via Docker
  • Il permet de construire un système utilisateur, l’exécuter en émulation QEMU et de démarrer sur machine physique
  • Le projet dispose de fonctions noyau avancées et d’une pile réseau, avec des ajouts de fonctionnalités en continu

Présentation du projet RetrOS-32bit

  • Projet de développement d’un système d’exploitation hobby 32 bits basé sur l’architecture i386
  • Prend en charge un environnement graphique, le multitâche et les fonctions réseau
  • Début du projet : 12 mai 2022

Informations de connexion par défaut

  • Comptes utilisateur par défaut : system, admin, guest
  • Le mot de passe de admin est admin, guest n’a pas de mot de passe
  • Il est possible de créer un nouvel utilisateur avec la commande admin create <nom_utilisateur> <mot_de_passe>

Principaux langages et outils de développement

  • C, Assembly : noyau, utilitaires, système de build
  • C++ : applications en espace utilisateur
  • Make : automatisation du build
  • Docker : fournit un environnement de compilation multiplateforme

Matériel testé

  • Lenovo x240
  • Asus Eee PC series
  • Dell Optiplex 780
  • Samsung N150 Plus
  • Samsung NP-NC10
  • IBM Thinkpad a21p

Démarrage (Getting Started)

Outils nécessaires (Prerequisites)

  • Docker : compilation multiplateforme
  • QEMU : émulation de machine virtuelle
  • Environnement Linux/WSL : build-essential, gcc-multilib, grub2, xorriso, xxd
  • MacOS : utilisation de Docker nécessaire (limitations de build x86 32 bits)

Méthode d’installation (Installation)

  • Cloner le dépôt Git
  • Initialiser les sous-modules Git
  • Générer le fichier image avec les commandes make compile, make img
  • Lancer l’émulateur QEMU avec la commande make qemu

Sur MacOS et Windows, l’usage de Docker est recommandé

Utilisation (Usage)

  • Envoyer le fichier .img sur le site copy.sh v86 pour l’exécuter
  • Exécution directe possible avec QEMU : make qemu ou qemu-system-i386 <nom_image>
  • Sur machine physique, il est possible de graver l’ISO basé sur GRUB sur USB/CD pour démarrer

Structure du projet (résumé rapide)

  • apps : applications en espace utilisateur
  • bin : fichiers binaires
  • boot : sources du bootloader
  • drivers : pilotes du noyau
  • fs : code du système de fichiers
  • graphics : code de traitement graphique
  • include : fichiers d’en-tête
  • kernel : sources principales du noyau
  • lib : bibliothèques
  • net : code réseau
  • rootfs : système de fichiers racine
  • tests : code de test
  • tools : outils de build et utilitaires

Feuille de route de développement (Roadmap)

  • Bootloader personnalisé et démarrage compatible GRUB terminés
  • Planification préemptive multithread et séparation noyau/espace utilisateur implémentées
  • Pile réseau : Ethernet, IP, ARP, UDP, TCP, DHCP, DNS terminés
  • Système graphique : gestionnaire de fenêtres, widgets, rendu en double framebuffer implémentés
  • Système de fichiers : similaire à Ext2, prise en charge de FAT16, lecture/écriture possible
  • Plan futur : ajout de la prise en charge de serveur web, FTP, IRC, SSH, Telnet, HTTP, HTML

1 commentaires

 
GN⁺ 2025-04-27
Commentaires Hacker News
  • Ce genre de projet est bien plus agréable à voir que l’IA. Je ne pense pas que ça se vendra, mais c’est l’exemple d’un ingénieur qui crée de façon inventive
    • J’ai beaucoup étudié le développement d’OS comme hobby à la fin de mon adolescence. Je continue encore à faire de petits noyaux (récemment, j’ai affiché un message à mon partenaire avec un petit noyau RISCV)
  • C’est l’un des projets de passion les plus impressionnants que j’ai vus depuis longtemps. Je me demande pourquoi il a écrit son propre compilateur C
  • La police système par défaut devrait être une variante plus condensée. Le système aurait l’air bien plus soigné
    • Il est clair que les caractères ont besoin de plus d’espace horizontal. Chaque caractère devrait être moins large, et l’espace entre les caractères devrait être aussi réduit que possible — à cette taille de police et cette résolution, un pixel suffirait probablement
    • Je ne connais pas très bien les systèmes de polices, mais j’imagine qu’il s’agit d’une police bitmap à largeur fixe. Je ne sais pas à quel point ce serait difficile de faire ce changement dans la base de code, mais si cela représente trop de travail, ne t’en fais pas
    • Je construis moi-même un site de web OS depuis zéro, et j’ai récemment entièrement réécrit ma classe de police. Du coup, cette question me trotte dans la tête
  • Excellent ! Si tu recommençais aujourd’hui, qu’est-ce que tu ferais différemment ?
    • Que penses-tu de l’adéquation du langage pour les parties bas niveau ? (par exemple, rester en C, ou utiliser un sous-ensemble simple de C++, ou l’un des nouveaux langages)
    • Avec toutes les ressources disponibles, comment as-tu gardé le projet intéressant sans copier le code des autres ?
  • Félicitations ! En tant que personne qui utilisait un Commodore PET 2001 en 1977, je trouve ça superbe. J’ai joué avec KolibriOS et MenuetOSx64, mais je voulais créer mon propre OS. Tu l’as fait ! J’espère que tu continueras à avancer
  • Je voulais te féliciter. Le projet m’a profondément impressionné. Je suis fan du développement d’OS depuis mon adolescence, et ça fait plaisir de voir cet accomplissement se concrétiser. Je suis curieux de savoir comment le sous-système graphique est initialisé. Je te souhaite beaucoup de réussite
  • Sera-t-il grand et professionnel comme GNU ? :)
  • Peux-tu expliquer comment ce compilateur interagit avec le système d’exploitation ? Je suis particulièrement curieux de savoir comment il gère des fonctionnalités comme les structures, ainsi que les limitations actuelles dans ce domaine et les améliorations prévues
  • C’est intéressant de voir plusieurs projets atteindre des jalons en même temps. C’est rassurant de constater qu’il y a encore des gens qui travaillent en profondeur sur les ordinateurs et qui partagent le résultat
    • J’espère que tu continueras à avancer
  • Je vois des traces de Turbo C/QBasic dans l’éditeur
    • Bravo pour le projet