AlpineOS, mon projet de système d'exploitation

Passionné depuis toujours par l'informatique, j'ai décidé de me lancer dans la création de mon propre système d'exploitation.
Ce projet ambitieux me permet d'approfondir ma compréhension du fonctionnement des ordinateurs et de développer mes compétences en programmation système.

Défis et découvertes

Créer un système d'exploitation, est probablement l'un des défis les plus passionnants en informatique. Cette aventure technique m'amène à explorer des concepts fascinants comme la gestion mémoire, les systèmes de fichiers, et bien d'autres mécanismes qui font tourner nos ordinateurs.

Chaque problème technique devient une occasion d'apprendre et de mieux comprendre ce qui se cache sous le capot de nos machines.

Ce qui fonctionne

Ss dispose d'un ensemble de fonctionnalités essentielles pour un OS fonctionnel.

Démarrage et initialisation :

  • Bootloader Multiboot compatible avec la spécification standard et GRUB
  • Pile système de 16 KiB pour l'initialisation sécurisée du noyau
  • Mode protégé 32 bits
  • Configuration des tables système (GDT, IDT, IRQ et ISR)

Kernel Glacier - cœur du système

Le kernel est composé des fonctionnalités suivantes.

Architecture et gestion système :

  • Ciblage spécifique de l'architecture Intel x86 (i686-pc-alpine)
  • Système de gestion mémoire avec pagination complète
  • Allocation dynamique avec gestion optimisée des pages physiques et virtuelles
  • Multitâche préemptif avec ordonnanceur de processus et threads efficace

Système de fichiers :

L'implémentation complète supporte répertoires, fichiers, liens symboliques et métadonnées. Le système dispose d'une interface d'appels système comprehensive incluant ioctl, link, unlink, rename, et offre une gestion avancée des permissions et des attributs de fichiers.

Interface et affichage

Modes graphiques disponibles :

Le système supporte un terminal VGA 80x25 avec support couleurs, un framebuffer graphique via pilote BGA (Bochs Graphics Adapter), et une profondeur couleur 32 bits par pixel.

Applications et outils

Applications système :

AlpineOS intègre un shell interactif avec parsing avancé et commandes intégrées (cd, exit, mv). Il propose des outils essentiels comme ls, cat, echo, mkdir, mv, grep, kill, touch, unlink, ainsi que des utilitaires de diagnostic tels que sysfetch, lsproc, gfxctl, terminal graphique. Le système dispose également d'un processus init pour gérer le démarrage.

Pilotes et périphériques :

  • Pilotes pour clavier et souris avec gestion d'événements
  • Communication série pour le débogage
  • Périphériques virtuels : /dev/null, /dev/zero, /dev/random, /dev/proc
  • Système ramdisk pour le stockage temporaire en mémoire

Bibliothèques développées

Les fondations du système :

  • libc : Bibliothèque C standard adaptée au système
  • libgfx : Bibliothèque graphique 2D avec rendu optimisé
  • libvtc : Parseur et moteur de rendu pour séquences d'échappement ANSI
  • libposix : Implémentation partielle des standards POSIX

L'Aventure continue

Le projet évolue constamment avec des améliorations continues du kernel, l'ajout de nouveaux appels système, et l'optimisation de la stabilité générale. L'accent est mis sur la robustesse, les performances et l'extensibilité du système.

Outils et technologies

  • Langages : C (norme GNU11) et Assembleur NASM pour un contrôle précis du matériel
  • Compilation : GCC cross-compiler personnalisé (i686-pc-alpine-gcc) avec binutils
  • Build : Make avec scripts d'automatisation
  • Tests : QEMU pour la virtualisation et le débogage
  • Distribution : GRUB avec support ISO bootable

Ce que ce projet m'apporte

Développer AlpineOS, c'est un voyage d'apprentissage incroyable qui me donne une compréhension profonde de ce qui fait fonctionner nos ordinateurs. Ce projet me permet de mettre en pratique des concepts théoriques essentiels : gestion mémoire, multitâche, systèmes de fichiers, interfaces graphiques...

Au-delà des compétences techniques, ce projet change ma façon de voir la technologie. Maintenant, quand j'utilise un ordinateur, je comprends mieux la complexité et l'élégance des systèmes qui orchestrent notre expérience numérique quotidienne.