diff --git a/Graphisme/screenshots/28-09-2018.png b/Graphisme/screenshots/28-09-2018.png new file mode 100644 index 0000000..d36fa27 Binary files /dev/null and b/Graphisme/screenshots/28-09-2018.png differ diff --git a/README.md b/README.md index 33b9b4f..e4575cf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -![logo](https://github.com/dahut87/cos2000v2/raw/master/Graphisme/logo.png) +# cos2000 + +![logo](https://github.com/dahut87/cos2000v2/raw/develop/Graphisme/logo.png) + +ou Compatible Operating System 2000 ## Présentation du projet @@ -13,19 +17,19 @@ Le système est développé essentiellement en langage C mais il comporte aussi Il s'agit du logiciel principal qui anime votre ordinateur. Il a pour fonctions principales : -* Piloter des périphériques tels que souris, clavier, écran, imprimante...etc; +* Piloter des périphériques, souris, clavier, écran, imprimante...etc; * Gérer des fichiers qui sont produit et exploités par des applications; -* Coordonner l'accès aux ressources par plusieurs utilisateurs; -* Détection et récupération des dysfonctionnements; +* Coordonner l'accès aux ressources pour plusieurs usagers; +* Détection et récupération de dysfonctionnements; * Surveiller les performances et assurer une gestion optimale des ressources systèmes. Sans système d'exploitation votre ordinateur est inopérant: c'est une boite vide ! #### Comment utiliser COS2000 ? -COS2000 n'a pas pour but d'être utilisé en production. Il s'agit d'un système en cours de -développement que vous pouvez néanmoins tester sur un ordinateur physique ou de préférence sur une machine virtuelle. -Il est nécessaire de compiler le système avant de démarrer celui-ci à partir d'un périphérique amovible (clé usb). +COS2000 n'a pas pour but d'être utilisé en exploitation, c'est un système en cours de +développement. Vous pouvez néanmoins l'utiliser sur un ordinateur physique ou une machine virtuelle +afin de voir le fonctionnement d'un système rudimentatire. Voir compilation de COS2000... #### Sur quel ordinateur fonctionne t'il ? @@ -41,17 +45,135 @@ COS2000 est sous licence LGPL v3.0, en simplifiant un peu : * REUTILISER - OUI en citant l'auteur * VENDRE - NON -Les détails se trouvent dans le fichier `LICENSE.md` +### Compilation de COS2000 -![logo](https://www.gnu.org/graphics/lgplv3-with-text-154x68.png) +#### Avant la compilation + +##### Logiciels utilisés + +L'OS a été développé sous Linux afin de disposer d'un maximum d'outils. Je vous conseille donc +d'utiliser ce système afin de procéder à la compilation même si celle-ci peut fonctionner +depuis Cygwin. Des distributions "Live" existent si vous ne souhaitez pas installer sur votre +ordinateur (http://www.linuxmint.com/edition.php?id=259). + +Les numéros de version des logiciels sont données à titre indicatif car il est fort probable que + cela fonctionne parfaitement avec d'autres versions antérieures. + +Compilation: + +* NASM version 2.11.08 +* gcc version 5.4.0 20160609 +* GNU Make version 4.1 +* binutils version 2.26-8 + +Images disques, débogage & émulation: + +* fuse-umfuse-ext2 version 0.4 29 +* fusefat version 0.1a-1.1 +* CGDB: a curses debugger version 0.6.7 +* QEMU emulator version 2.5.0 +* OVMF version 0~20160408.ffea0a2c-2 +* hexdump (bsdmainutils version 9.0.6) +* dd (coreutils version 8.25-2) +* tar version 1.28-2.1 +* GNU indent version 2.2.11 + +##### Téléchargement de COS2000 + +Afin de faciliter la mise à jour et le suivi des version de COS2000, GIT est utilisé. + +Si vous n'avez pas GIT, installez le avec la commande suivante : + +```sudo apt-get install git``` + +Puis cloner le source chez vous avec la commande : + +```git clone https://github.com/dahut87/cos2000.git``` + +##### Installation des paquets nécessaires + +Sous linux - Debian & Ubuntu like + +```sudo apt-get install nasm gcc qemu fusefat fuseext2 cgdb ovmf bsdmainutils tar bsdmainutils indent binutils``` + +ou sinon, depuis un terminal disposé sur le répertoire cos2000 + +```make install``` + +#### Compilation + +Commandes de compilation de COS2000 + +* ```make all``` compile tout le projet dans sa version disquette, disque dur et disque dur UEFI +* ```make floppy``` compile la version disquette +* ```make harddisk``` compile la version disque dur +* ```make uefi``` compile la version disque dur UEFI +* ```make floppytest``` lance l'émulation QEMU en 32 bits sur disquette +* ```make test``` lance l'émulation QEMU en 32 bits sur disque dur +* ```make test64``` lance l'émulation QEMU en 64 bits sur disque dur UEFI +* ```make clean``` supprime les fichers compilés + +Pour tester fait donc un simple ```make test``` qui compilera et émulera le système directement. + +#### Utilisation + +Pour l'instant quelques commandes seulement sont disponibles: + +* REBOOT redémarre le PC, +* CLEAR efface l'écran, +* MODE change le mode video, +* DETECTCPU detecte et affiche les informations CPU, +* TEST2D teste l'affichage graphique 2D, +* REGS affiche les registres CPU, +* GDT affiche la table des descripteurs, +* IDT affiche la table des interruptions, +* INFO affiche des informations issues de GRUB. + +![COS2000 le 28-09-2018](https://github.com/dahut87/cos2000v2/raw/develop/Graphisme/screenshots/28-09-2018.png) + +#### Organisation du dépôt + +* boot - fichiers source assembleur démarrage FAT12 - disquette +* debug - fichiers configuration débogueur +* final - img raw utilisables avec un émulateur des 3 versions +* * harddisk.img.final +* * harddiskuefi.img.final +* * floppy.img.final +* Graphisme - fichiers images +* * screenshot - screenshots de l'évolution du système +* * Thème - thème de démarrage COS2000 pour plymouth +* include - fichier d'entête C +* lib - librairies pour le noyau +* makefile - Makefile du projet +* programs - programme pour le domaine utilisateur (en cours) +* README.md - ce que vous lisez +* system - le noyau lui-même ### En savoir plus... +#### Avancement du projet + +* secteur de boot disquette (FAT12), +* démarrage autre support par GRUB (Disque dur/SSD, réseau...Etc), +* pilote souris, clavier, VGA, +* gestion des interruptions et de la segmentation GDT, +* interpréteur de commande, +* noyau avec fonctions minimales implémentées (printf, itoa, maths...), +* mode protégé limité à 4Go de mémoire vive. + +#### A faire +* gestion du framebuffer, +* gestion de la mémoire paginée, +* espace utilisateur et appels systèmes, +* ordonnanceur de tâche, +* chargeur ELF32, +* pilote IDE/ATA et lecture/ecriture EXT2FS. + #### Historique du projet * Version 2.2fr - C en mode protégé Reprise du projet * Version 2.1fr - C en mode protégé Abandon du projet * Version 2.0 - C en mode protégé VGA text+pmode -* Version 1.x - Assembleur en mode réel +* Version 1.x - Assembleur en mode réel (v1.0 - 1.4.2fr) > “La connaissance s'acquiert par l'expérience, > tout le reste n'est que de l'information.. diff --git a/SCREENSHOTS.md b/SCREENSHOTS.md index abea77c..6c7bb43 100644 --- a/SCREENSHOTS.md +++ b/SCREENSHOTS.md @@ -1,4 +1,5 @@ ![logo](https://github.com/dahut87/cos2000v2/raw/master/Graphisme/logo.png) ## Copies d'écran de COS2000 +![screen](https://github.com/dahut87/cos2000v2/raw/develop/Graphisme/screenshots/28-09-2018.png) ![screen](https://github.com/dahut87/cos2000v2/raw/develop/Graphisme/screenshots/ansi.png) diff --git a/makefile b/makefile index 4d8bf45..0389950 100755 --- a/makefile +++ b/makefile @@ -16,7 +16,7 @@ harddisk: final/harddisk.img.final uefi: final/harddiskuefi.img.final install: - (sudo apt-get install nasm gcc qemu fusefat fuseext2 cgdb) + (sudo apt-get install nasm gcc qemu fusefat fuseext2 cgdb ovmf bsdmainutils tar bsdmainutils indent binutils) clean: (cd system; make clean) diff --git a/programs/Programmes utilisateurs à venir b/programs/Programmes utilisateurs à venir new file mode 100644 index 0000000..e69de29