Comment participer ?
Pourquoi contribuer à KOS ?
En contribuant à KOS, vous pourrez :
- Comprendre le fonctionnement interne d'un système d'exploitaiton
32 bits multitâche moderne, et le fonctionnement de l'architecture
d'un ordinateur. KOS est un petit système d'exploitation, comparé au
noyau Linux, ou à ceux des systèmes BSDs. Cela permet d'avoir une
compréhension complète de son fonctionnement, et donc ensuite de
pouvoir plus facilement comprendre comment les autres noyaux
fonctionnement ;
- Améliorer vos compétences en programmation C ;
- Participer à un développement distribué, ce qui permet
d'utiliser des outils comme les mailing-lists ou CVS et de discuter
les concepts et idées par courrier électronique. L'organisation du
développement de KOS est typique de celle d'un petit Logiciel Libre,
et participer à son développement vous permettra de découvrir cela
;
- Et surtout, participer à un projet cool et sympa !
Même si le projet paraît déjà important, nous sommes tout à fait
prêts à expliquer à quiconque réellement intéresser comment tout cela
fonctionne. N'hésitez pas à participer !
Comment contribuer ?
Voici quelques étapes pour commencer à contribuer à KOS :
- S'incrire à la liste de diffusion
kos-dev
, qui est la liste dédiée au
développement. N'hésitez pas à poser vos questions, même si elles
vous paraissent stupides. Nous savons que comprendre le
fonctionnement d'un système d'exploitation n'est pas facile, et
sommes prêts à expliquer ;
- Récupérer le code source en utilisant CVS, et le faire fonctionner en lisant le document
Compiler, tester et debugger KOS disponible sur la page des documents. La
plateforme de développement principale est Unix, en particulier
GNU/Linux. KOS n'est pas très user-friendly pour le moment,
donc n'hésitez pas à poser vos questions sur la liste de discussion
si vous n'arrivez pas à le compiler ou à l'éxécuter ;
- Si vous n'êtes pas familier avec le fonctionnement interne des
systèmes d'exploitation, nous vous recommandons la lecture de la
série d'articles rédigée par David Decotigny et Thomas Petazzoni et
publiée dans Linux Magazine France. Cette série d'articles décrit pas
à pas la construction d'un système d'exploitation simple, baptisé
SOS, fortement inspiré de KOS. Toutes les informations et les anciens
articles sont disponibles sur le site http://sos.enix.org.
- Lire les documents Modules dans KOS ( [PS] [PDF]
) et le rapport
réalisé par Mélanie Bats et Thomas Petazzoni sur KOS ([PDF]). Ils
contiennent les informations les plus intéressantes au sujet du
projet ;
- Programmer un petit module simple en prenant exemple sur
les modules déjà existants, ou sur la documentation [PS] [PDF] [GZIPPED PS] [GZIPPED PDF] [HTML] [GZIPPED HTML TAR ARCHIVE]
. Une fois que vous êtes
familier avec les procédures de compilation et de tests, vous pouvez
choisir un des éléments de la liste de la section suivante. Parlez-en
sur la liste avant de commencer !
Bien entendu, contribuer du code n'est pas la seule manière de
contribuer. Le site a besoin d'être mis à jour avec de nouvelles
documentations et références sur les systèmes d'exploitation
(architecture, concepts, recherches, documentations sur le matériel
...). Le projet KOS a également besoin de documentation. Documenter le
projet est un bon point de départ pour comprendre son
fonctionnement.
Que puis-je faire ?
La TODO-liste complète est disponible dans le répertoire racine du
module CVS kos. Ici, je liste quelques points de la TODO-liste
qui sont relativement indépendants des développements actuels et qu'un
nouveau développeur peut donc prendre en charge.
- Implémenter le support de l'écriture dans le driver IDE. Pour le
moment, le driver IDE est seulement capable de lire depuis un disque
dur. Ajouter le support en écriture ne devrait pas être trop
difficile ;
- Implémenter le support de l'écriture dans le driver FAT. FAT est
le seul système de fichiers supporté par KOS et est limité à la
lecture seule. Ajouter le support de l'écriture est un challenge
intéressant !
- Implémenter le support des IRQ et du DMA dans le driver
IDE. Pour l'instant, le driver IDE utilise uniquement la technique
du polling, c'est à dire l'attente active, ce qui n'est pas
très efficace. Ajouter le support des IRQ, et pourquoi pas du DMA
serait intéressant ;
Remarque: le pilote IDE de SOS fonctionne avec les IRQs, il peut
être utile de s'en inspirer. Le code de ce pilote sera prochainement
disponible.
- Améliorer le driver PCI. Pour l'instant, un driver PCI très
basique détecte les périphériques PCI du système. Ce driver doit
être amélioré pour proposer aux autres drivers (drivers de carte
réseau par exemple) une API pour demander si des cartes PCI sont
disponibles, et si oui quelles sont leurs caractéristiques ;
- Implémenter un driver pour les cartes réseau PCI NE2000. Cette
carte réseau est émulée par Bochs et Qemu ;
Remarque: SOS disposera d'un petit pilote
NE2000 qui sera prochainement disponible (fin 2005
vraisemblablement)
- Implémenter une pile réseau basique, avec le support ARP, IP, et
pourquoi pas UDP, ICMP et TCP ! Bien sûr, cela doit être fait étape
par étape, au fur et à mesure.
Remarque: SOS disposera d'une petite pile IP
qui sera prochainement disponible (fin 2005
vraisemblablement)
- Séparer le module
idt
en deux modules. Ce module
contient le code de gestion des interruptions, mais celui-ci mélange
du code dépendant de l'architecture avec du code indépendant de
l'architecture. Il faut donc identifier ces deux parties de code, et
mettre la partie dépendante de l'architecture dans un module
arch/idt
et conserver la partie indépendante dans
idt
;
- Séparer le module
debug
en deux modules, pour les
mêmes raisons que le module idt
;