Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > Programmation d'OS
Programmation d'OS Programmation de systèmes d'exploitation
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/06/2008, 16h49   #1
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Par défaut Nouveau tutoriel en ligne : comment programmer un noyau ?

Bonjour,

j'ai le plaisir de vous annoncer la naissance d'un petit tutoriel qui explique comment programmer un noyau from scratch :
ici

Mon but a été de faire le plus didactique possible, j'ai donc évité au maximum d'alourdir le code du noyau afin que les concepts implémentés soient clairement mis en évidence.
Ce noyau n'est évidement pas terminé, il manque beaucoup de choses, mais mon but est seulement d'expliquer comment mettre en oeuvre certains éléments clefs : la segmentation, la pagination, les interruptions, le multi-tâche, etc.

Il y a sans doute aussi des explications peu claires, des typos, des erreurs... et j'attends votre retour et vos critiques. En bref, tout ce qui peut permettre d'améliorer ce tutoriel sera bien venu

En vous souhaitant une bonne lecture !
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2008, 13h28   #2
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Par défaut Grub

J'ai implémenté le boot de Pépin avec Grub.

Le chapitre décortiquant les mécanisme du boot est encore en cours d'écriture mais il comprend déjà :
- le code source intégral de Pépin
- la description du nouveau modèle d'allocation de la mémoire
- la façon de générer une image de disquette avec Grub
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 16h40   #3
dapounet
Membre expérimenté
 
Avatar de dapounet
 
Étudiant
Inscription : juillet 2007
Messages : 472
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 472
Points : 557
Points : 557
J'ai lu un peu, ça a l'air d'être du beau boulot !
Par contre ça m'a surpris un peu qu'il n'y ait pas d'introduction à bochs alors qu'il n'est pas évident à utiliser.
__________________
:wq
dapounet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 19h35   #4
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Merci Dapounet,

Oui, je suis d'accord sur Bochs. C'est un petit peu difficile à paramétrer correctement au début et justement je me demandais si il fallait que j'évoque le sujet... et bien la réponse semble être "oui"

Je vais ajouter des explications dans l'annexe spécifique et au début du tuto.
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 15h15   #5
Forthman
Membre expérimenté
 
Avatar de Forthman
 
Homme François
conception mécanique
Inscription : janvier 2005
Messages : 330
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 37
Localisation : France, Tarn et Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : conception mécanique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 330
Points : 532
Points : 532
Salut,

Ce document existe-t-il en format pdf ?
c'est typiquement le truc que j'aime lire le soir au plumard

a+ Francois
Forthman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 21h45   #6
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Hélas non, car j'ai édité tout directement sur le wiki (parceque c'est pratique et aussi par flemme d'utiliser docbook ).

En revanche, c'est possible d'imprimer à partir du navigateur avec le menu 'print'. Le résultat ne vaut pas un beau pdf généré à partir de latex, mais bon... ça permet d'être lu au lit
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2008, 00h33   #7
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Bonsoir tout le monde,

en allant sur le Site du Zéro, je me suis rendu compte que certains rencontraient des difficultés avec mon tutoriel.
Si certaines explications vous paraissent limpides comme la nuit ou bien que le code présenté refuse obstinément de fonctionner, ça n'est pas un effet voulu de ma nature sournoise et perverse mais bien un problème à corriger

N'hésitez donc pas à me le signaler, car c'est votre retour qui me permet d'améliorer ce tuto.

Voili, voilà...

@plouf !
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2008, 18h50   #8
Revan76
Candidat au titre de Membre du Club
 
Lycéen
Inscription : février 2008
Messages : 12
Détails du profil
Informations personnelles :
Âge : 21
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : février 2008
Messages : 12
Points : 10
Points : 10
Citation:
Envoyé par milouz123 Voir le message
Bonsoir tout le monde,

en allant sur le Site du Zéro, je me suis rendu compte que certains rencontraient des difficultés avec mon tutoriel.
Si certaines explications vous paraissent limpides comme la nuit ou bien que le code présenté refuse obstinément de fonctionner, ça n'est pas un effet voulu de ma nature sournoise et perverse mais bien un problème à corriger

N'hésitez donc pas à me le signaler, car c'est votre retour qui me permet d'améliorer ce tuto.

Voili, voilà...

@plouf !
Hello

J'ai eut un probleme avec le secteur de boot moi aussi
J'ai découvert que le probleme venait en fait de mon utilisation de Qemu. (je sais c'est le mal mais je me suis jamais embeté avec bochs, promis je m'y met )

Et en lisant le topic de qqn qui avait le même problème je me suis dit que c'était la honte de pas réussir à faire marcher ce truc. (ce n'est qu'un simple bootsector)
Alors j'ai cherché encore un peu et j'ai posté ma solution , je cite :

Citation:
Je viens de trouver!

nasm kernel
nasm boot
cat boot kernel /dev/zero | dd of=nom_de_l_image bs=512 count=2880
qemu

"select an image to use as volume fdA (à gauche de la disquette, en bas)"
boot option : fdA
si met hda en boot option et que tu "select an image to use as volume fdA" ca ne marchera pas! Si tu fais charger=>lancer ca ne marchera pas. Par défaut qemu fait comme si c'était un disque (hd=hard drive, fd=floppy disk) et non une disquette.

Lancez.

Admirez!

Si vous n'avez pas compris :
http://img53.imageshack.us/img53/5838/bonso1.jpg
Revan76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2008, 13h35   #9
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Merci pour l'astuce

Je suis tout de même un peu étonné car en bas du premier chapitre il y a la ligne de commande à utiliser pour tester avec Qemu. Cette ligne ne fonctionnait pas dans votre cas ?
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2008, 12h50   #10
Revan76
Candidat au titre de Membre du Club
 
Lycéen
Inscription : février 2008
Messages : 12
Détails du profil
Informations personnelles :
Âge : 21
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : février 2008
Messages : 12
Points : 10
Points : 10
Ah ok vous avez indiqué la ligne de commande à utiliser à la fin du 1er exemple....
Honte à moi...(comme on peut faire marcher le premier secteur de boot en faisant simplement ouvrir/fichier.bin :/)

Puis-je suggérer de mettre la ligne de commande avant l'image afin que d'autres boulets comme moi ne se fassent pas avoir? (il me semble que d'autres personnes ont eut le même problème, notamment sur le sdz.)

Sinon bon courage pour la suite, votre site est excellent. (et les explications sont claires )
Revan76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2008, 13h55   #11
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Merci pour le message et la suggestion
Je vais faire le remplacement dans le chapitre pour que ce soit plus clair !
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2008, 14h34   #12
Revan76
Candidat au titre de Membre du Club
 
Lycéen
Inscription : février 2008
Messages : 12
Détails du profil
Informations personnelles :
Âge : 21
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : février 2008
Messages : 12
Points : 10
Points : 10
Tiens je viens de refaire un test pour voir ou ca n'allait pas :

Le n°4 si l'on avait pas lu la ligne de commande pour qemu et qu'on utile qemu. (ou qu'on ne sait pas utiliser bochs )

Le n°7 (et le 6 aussi, mais j'ai testé avec l'archive du site).
En utilisant le makefile et en faisant comme avant : ca ne marche pas. (pas de disque bootable selon qemu, si je test pour de vrai l'ordi ne s'occupe même pas de la disquette.)

Egalement un truc (je suis embêtant je sais), quand tu parle du noyau en C, tu n'expliques pas comment cela se fait que l'on puisse programmer en C. Il est également possible de programmer un noyau avec autre chose que du C il me semble. Cela pourrait être utile de le préciser.

Pour résumer : le code est super clair mais, personnellement, je trouve qu'on peut avoir du mal a lancer l'os /secteur de boot. (Je n'ai aucune difficulté avec le code mais, c'est bête à dire, j'ai beaucoup plus de mal à mettre le tout sur une disquette ou dans une image faite pour bochs/qemu ^^)

Voilà. Je dis cela pour que tu comprennes un peu mieux ce qui peux ne pas aller à la lecture pour que tu puisse améliorer tes tutos si tu le souhaites. (au passage, je précise que je ne suis qu'un geek de 16 ans alors peut-être que tu vises un publique plus vieux et expérimenté, dans ce cas mes remarques ne sont peut-être pas à prendre en considération. )

Encore bon courage
Revan76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 20h38   #13
dapounet
Membre expérimenté
 
Avatar de dapounet
 
Étudiant
Inscription : juillet 2007
Messages : 472
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2007
Messages : 472
Points : 557
Points : 557
De temps j'obtiens des pages d'erreur de Free quand j'essaie de lire le tutoriel. Pourquoi ne pas demander un hébergement sur Développez ?
__________________
:wq
dapounet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2008, 22h30   #14
Alcatîz
Responsable Pascal

 
Avatar de Alcatîz
 
Homme Jean-Luc Gofflot
Ressources humaines
Inscription : mars 2003
Messages : 5 510
Détails du profil
Informations personnelles :
Nom : Homme Jean-Luc Gofflot
Âge : 46
Localisation : Belgique

Informations professionnelles :
Activité : Ressources humaines
Secteur : Service public

Informations forums :
Inscription : mars 2003
Messages : 5 510
Points : 39 358
Points : 39 358
Envoyer un message via ICQ à Alcatîz Envoyer un message via MSN à Alcatîz Envoyer un message via Yahoo à Alcatîz Envoyer un message via Skype™ à Alcatîz
Citation:
Envoyé par dapounet Voir le message
De temps j'obtiens des pages d'erreur de Free quand j'essaie de lire le tutoriel. Pourquoi ne pas demander un hébergement sur Développez ?
C'est prévu
__________________
Règles du forum
Tutoriels, exercices, FAQ, sources, compilateurs, outils, livres Pascal
Mes tutoriels et sources Pascal
FAQ Assembleur

Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
Alcatîz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2008, 08h44   #15
CP / M
Membre actif
 
Inscription : juillet 2008
Messages : 145
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 145
Points : 154
Points : 154
Je confirme ce que dit Revan76: chez moi, la disquette boote mais ne lance pas le secteur du noyau.
CP / M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2008, 10h31   #16
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Bonjour,

pour que j'essaye de reproduire le problème, est-ce que je pourrais avoir la liste de commandes permettant de générer l'image de la disquette, le fichier de configuration bochs et le fichier de log généré par bochs ?
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 11h23   #17
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Bonjour tout le monde

Les 17 premiers chapitres du tutoriel ont été revus et corrigés ainsi que le code correspondant. J'ai essayé de rendre les explications plus fluides et plus claires, en évitant au maximum les omissions. J'en ai également profité pour retoucher le code illustrant chaque chapitre afin qu'il y ait davantage de cohérence dans l'ensemble (et quelques petits bugs ont été corrigés au passage).

Je suis bien évidement à l'écoute de vos suggestions et remarques concernant les éventuels bugs, incohérences, etc.

Bonne lecture !
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2008, 18h28   #18
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Bonjour à tous,

je viens de boucler le chapitre 18 sur la gestion de la mémoire.
Même si j'ai essayé de faire au plus simple, c'est un chapitre un peu long et plutôt compliqué.
N'hésitez donc pas à me signaler les points obscurs ou manquant de détail.

Bonne lecture !

Arnauld
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2008, 11h45   #19
Krys
Invité de passage
 
Inscription : août 2002
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 4
Points : 4
Points : 4
Par défaut Secteur de Boot

Pour ceux que cela interesse, cela fait longtemp que j'essaie d'écrire un petit OS sans aucune prétention.
Je n'ai pas abouti mais cela m'a permis de progresser sur la connaissance du mode de fonctionnement des PC.
Pour ma part, j'utilise Bochs ou VmWare pour l'émulation. Pour la construction de l'image, j'utilise WinImage. Pour les personnes qui désirent utiliser Bochs et WinImage, je peux les aider.
Je désire reprendre cette activité en formant un petit groupe. Merci de me dire si cela vous intéresse. Dans ce cas, je me propose de commencer par un secteur de boot n'utilisant pas Grub.

Merci de votre réponse et à bientôt.

Cordialement,

Krys.
Krys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2008, 21h38   #20
milouz123
Membre actif
 
Inscription : mai 2008
Messages : 157
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2008
Messages : 157
Points : 160
Points : 160
Bonjour Krys,

je t'encourage vivement dans ton projet !

Sinon, est-ce que tu as déjà une idée du type de noyau (monolithique, micro noyau...) et du langage de programmation ?
milouz123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h28.


 
 
 
 
Partenaires

Hébergement Web