@ -23,9 +23,7 @@ Sans système d'exploitation votre ordinateur est inopérant: c'est une boite vi
#### 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 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).
#### Sur quel ordinateur fonctionne t'il ?
@ -51,45 +49,11 @@ Les détails se trouvent dans le fichier `LICENSE.md`
##### 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
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.
Je conseille l'usage du debogueur GDB avec l'ajout de [GDB dashboard - Modular visual interface for
GDB in Python](https://github.com/cyrus-and/gdb-dashboard) qui permet de visualiser le contenu des registres CPU en permanence.
Compilation.
Nom | Paquet | Version
--- | --- | ---
gcc | gcc | *>7.0*
GNU Make | make | 4.1
Outils divers | binutils | 2.26-8
Images disques, débogage & émulation:
Nom | Paquet | Version
--- | --- | ---
fuse-umfuse-ext2 | fuseext2 | 0.4 29
fusefat | fusefat | 0.1a-1.1
GDB | gdb | 8.1.0.20180409-git
QEMU emulator | qemu | 2.5.0
OVMF | ovmf | 0~20160408.ffea0a2c-2
hexdump | bsdmainutils | 9.0.6
dd | coreutils | 8.25-2
tar | tar | 1.28-2.1
Bochs | bochs | 2.6
Suivi et développement:
Nom | Paquet | Version
--- | --- | ---
GNU indent | indent | 2.2.11
GIT | git | 2.7.4
Dos2unix | dos2unix| 6.0.4
L'OS a été développé sous Linux afin de disposer d'un maximum d'outils dont GCC/GAS/Docker et l'ensemble de BINUTILS. Je vous conseille donc d'utiliser Linux afin de procéder à la compilation même si celle-ci peut fonctionner depuis Windows grace à Cygwin. Des distributions "Live" existent si vous ne souhaitez pas installer sur votre ordinateur (http://www.linuxmint.com/edition.php?id=259).
Je conseille l'usage du debogueur GDB avec l'ajout de [GDB dashboard - Modular visual interface for GDB in Python](https://github.com/cyrus-and/gdb-dashboard) qui permet de visualiser le contenu des registres CPU en permanence.
Le système de conteneurisation Docker est exploité afin de d'assurer une reproductibilité totale de l'environnement de compilation quelque soit la distribution linux utilisée.
##### Téléchargement de COS2000
@ -103,45 +67,37 @@ Puis cloner le source chez vous avec la commande :
ou sinon, depuis un terminal disposé sur le répertoire cos2000
`make install`
#### Compilation
Docker est utilisé afin de permettre le fonctionnement correcte de la compilation. Au premier lancement de make.sh, si vous utilisez une distribution basée sur le système de paquet Debian, l'installation sera réalisée automatiquement. Dans le cas contraire, installez Docker et relancez le script. Une image docker est produite afin de procéder ensuite à la compilation du système.
Commande de compilation de base
* `make all` compile tout le projet dans sa version disque dur et disque dur en UEFI
* `./make.sh all` compile tout le projet dans sa version disque dur et disque dur en UEFI
Autres commandes de compilation de COS2000
* `make harddisk` compile la version disque dur
* `make uefi` compile la version disque dur UEFI
* `make bochstest` lance l'émulation BOCHS en 32 bits sur disque dur
* `make test` lance l'émulation QEMU en 32 bits sur disque dur
* `make test64` lance l'émulation QEMU en 64 bits sur disque dur en UEFI
* `make clean` supprime les fichers compilés
* `make syscall` réactualise les librairies du domaine utilisateur
* `make programs` compile les programmes du domaine utilisateur
* `VESA=no make test` préfixe à utiliser (VESA=no) pour faire appel au pilote VGA et non pas VESA
* `./make.sh harddisk` compile la version disque dur
* `./make.sh uefi` compile la version disque dur UEFI
* `./make.sh bochstest` lance l'émulation BOCHS en 32 bits sur disque dur
* `./make.sh test` lance l'émulation QEMU en 32 bits sur disque dur
* `./make.sh test64` lance l'émulation QEMU en 64 bits sur disque dur en UEFI
* `./make.sh clean` supprime les fichers compilés
* `./make.sh syscall` réactualise les librairies du domaine utilisateur
* `./make.sh programs` compile les programmes du domaine utilisateur
* `VESA=no ./make.sh test` préfixe à utiliser (VESA=no) pour faire appel au pilote VGA et non pas VESA
#### Utilisation
##### Sur un ordinateur émulé
Pour tester l'OS en émulation taper donc la commande `make test` qui compilera avant de lancer Qemu.
Pour tester l'OS en émulation taper donc la commande `./make.sh test` qui compilera avant de lancer Qemu.
##### Sur un ordinateur physique
Lancer une compilation du système COS2000
`make all`
`./make.sh all`
Puis, il faut copier l'image sur une clé (Attention l'opération effacera le contenu de la clé) :
@ -187,15 +143,16 @@ Pour l'instant quelques commandes seulement sont disponibles:
#### Organisation du dépôt
* `debug` - fichiers configuration débogueur
* `docker` - fichiers pour la construction de containers
* `final` - img raw utilisables avec un émulateur des 3 versions
* * `harddisk.img.final`
* * `harddiskuefi.img.final`
* * `floppy.img.final`
* * `harddisk.img.xz`
* * `harddiskuefi.img.xz`
* `Graphisme` - fichiers images
* * `screenshots` - screenshots de l'évolution du système
* `include` - fichier d'entête C
* `lib` - librairies pour le noyau
* `makefile` - Makefile du projet
* `make.sh` - Script de compilation utilisant Docker
* `templates` - Modèles utilisés pour générer des libraires du domaine utilisateur
* `programs` - programmes pour le domaine utilisateur