Un système d’exploitation inspiré d’UNIX, fait main pour les processeurs intel x86.
GitHub - - - -
Bonjour à tou.te.s!
Je m’appelle Nicolas, j’ai 21 ans, je suis belge et je fais un bachelier en informatique de gestion. Je suis ici pour vous présenter le fruit d’un peu plus d’une année de travail : skiftOS.
Présentation et avancement
skift est un système d’exploitation que j’ai commencé à écrire dans le but d’apprendre le C, la programmation système, et l’architecture et implémentation d’un SE. Il est composé d’un noyau nommé hjert, de librairies (libsystem, libwidget, libterminal, etc), des commandes de base inspirer d’UNIX (cat, ls, cd, sh, …) et d’un environnement graphique (WIP).
Au cœur de skiftOS il a hjert, un noyau monolithique fonctionnant en multitâche préemptif avec pagination qui est capable de charger des applications au format ELF.
Le système dispose de plusieurs librairies dont :
libsystem
: qui effectue la communication qui fournit les APIs de base (gestion des processus, système de fichier, communication, …);libcompat
: pour faciliter le portage d’application existante en fournissant une interface POSIX ce qui devrais permettre dans le futur de porter des programme comme bash, make ou gcc;libgraphic
: pour le rendu de graphisme en 2D notamment utiliser par libwidget;libwidget
: création d’interfaces graphiques (boutons, fenêtres, etc.)
Il peut faire tourner DOOM
Le portage de DOOM est possible grâce à libcompat
et doomgeneric (code source du portage)
Objectifs
Mon objectif initial d’apprendre le C est atteint je crois, mais voici d’autre objectif que j’aimerais biens accomplire:
- Des tests automatiques, car actuellement, je testes tout à la main, pour commencer les syscalls puis libsystem.
- Un bureau avec barre des taches, explorateur de fichier, etc
- Une pile réseau, de quoi faire des pings, télécharger des fichiers depuis HTTP
- Supporter d’autre architectures notamment ARM
Tester le système
Vous pouvez télécharger l’ISO du système depuis github
Je vous recommande d’utiliser QEMU pour tester le système, mais VirtualBox est aussi supporté. Vous pouvez aussi l’essayer sur votre propre machine en créant une USB bootable, mais c’est à vos risques et périls
QEMU
qemu-system-x86_64 -cdrom bootdisk.iso -m 256M -serial mon:stdio -enable-kvm
ou
qemu-system-i386 -cdrom bootdisk.iso -m 256M -serial mon:stdio -enable-kvm
VirtualBox
- Generique 32bit
- Minimum 256MB de RAM
- Pas besoin de disque dur
Contribuer
Je vous invite à faire un petit tour sur le GitHub et me donner votre avis sur mon code, je suis encore un débutant en C donc tout les critiques sont bonnes à prendre Si vous voulez m’envoyer une pull request je me ferais un plaisir de la merge
Bonne journée et merci de m’avoir lu