skiftOS

Un système d'exploitation inspiré d'UNIX, fait main pour les processeurs intel x86.

a marqué ce sujet comme résolu.

Un système d’exploitation inspiré d’UNIX, fait main pour les processeurs intel x86.

GitHub - Deploy - GitHub release (latest by date including pre-releases) - GitHub last commit GitHub issues - GitHub pull requests

L'interface graphique de skiftOS
L'interface graphique de skiftOS
L'interface en ligne de commande de skiftOS
L'interface en ligne de commande de skiftOS

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 :p

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 :D

+11 -0

Salut,

Je trouve ton projet intéressant, surtout dans un but pédagogique bien-sûr. J’ai moi aussi sur une sombre TODO-list poussiéreuse la création d’un OS, pour voir comment c’est fait, comment ça marche, etc.

Est-ce que tu pourrais faire une liste (ici ou sur le dépôt du projet) des ressources que tu as utilisé pour parvenir à faire tout ça (tutoriels, sites internet, documentations, livres…) ? (bon je suis tombé sur ça entre temps, qui répond un peu à ma question)

En tout cas, chapeau pour le travail accompli !

Hello les agrumes :) ,

Aujourd’hui, je viens de finir d’écrire le parser json qui servira pour les fichiers de configuration du système.

J’ai aussi pas mal avancer sur le framework d’interface graphique du système, j’ai ajouté des widget telle que des boutons, étiquette et panneaux.

@SuperFola merci :)

En fait, je pensais ajouter une extension à mon parser JSON pour supporter les commentaires avec /**/ et //

Exemple:

{
    /* je suis un commentaire */
    "clé": "valeur"
    // je suis un autre commentaire :)
}

Mais c’est vrai que le TOML et YAML semble êtres aussi de bon choix pour faire des fichiers de configuration. ;)

Hello les agrumes :)

Cette semaine si j’ai fait pas mal de travail sur l’interface graphique, j’ai notamment commencer a travailler sur l’explorateur de fichier et le support des thèmes dans libwidget.

L'explorateur de fichier, le terminal, et le dialogue "à propos de"
L'explorateur de fichier, le terminal, et le dialogue "à propos de"
Demonstration du dark et light mode
Demonstration du dark et light mode
+1 -0

Hello :)

Ça fait un moment que j’en ai pas poster de mise à jour. J’ai pas mal passé mon temps à corriger des bugs et refactoriser le kernel. Mais J’ai quand même quelque petite chose à vous montrer.

D’abord le portage de DOOM a été mise à jour fonctionner dans l’environnement graphique.

Ensuite j’ai passé un bon coup de polish sur l’interface graphique, debugger le calcule de mise en page qui parfois n’était pas précise au pixel près.

Le shell dispose aussi maintenant d’un historique, d’un meilleur éditeur pour les commands et le support des pipes.

+4 -0

Wow déjà trois mois que je n’ai plus poster ici :D

Donc voici une petite mise a jours sur skiftOS, le projet a été porté vers C++, plein d’utilitaire de base ont été ajouté comme uname, basename, dirname, tac, rmdir, head, etc… Nous travaillons actuellement sur un driver audio (AC97), un driver reseau (e1000), le support du 64bit et du multicœur :)

Si le développement d’OS vous intéresse, je vous conseille de rejoindre le discord DEVSE qui rassemble les développer d’OS francophone (https://discord.com/invite/3XjkM6q). J’y fais régulièrement des lives où je développe skiftOS.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte