Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/09/2008, à 01:08

andrelec1

Mon pseudo OS

Plop a vous
Alors voila je voudrais cree un pseudo OS

Donc d'apres ce que j'ai deja lue , il me faudras apprendre deux langages :
ASM (cherche un bon tuto en fr )
C (j'en est deja fais mais il y a longtemps si vous avais un tuto je suis preneur aussi )

Donc voila , le truc c'est que je cherche pas a faire un de super compliquer ...
au final je veux avoir un cd , et quand je le mais dans un pc
je boot dessus et la une image s'affiche ... ( si possible une petit diapo entre plusieur images

Donc j'ai du courage ... du temp ( mais pas 30 ans xD )

Mais voila , quesqu'il me faux ?
Des partie de "mon pseudo OS" sont-elle deja cree et disponible sur le net
comme la partie de boot par exemple ?

De quoi ce pseudo system devrait-il estre composee ?
( secteur de boot , systeme pour afficher l'image , les image )

et pour corser le systeme un peut plus sinon c'est pas marrant
faire en sorte que le system ce charge dans la ram comme sa des qu'il est charger
je peut recuperais le cd ...

Merci


Je crois que mes chances avec elle sont tellement mince que si on gravait des processeurs a cette epaisseur on atteindrait les 12 ghz.
████████████████████████████
█████████ Black -Out  ███████████
████████████████████████████

Hors ligne

#2 Le 28/09/2008, à 02:20

Кຼزດ

Re : Mon pseudo OS

ça à l'air compliqué, mais je pense que tu peux utiliser un noyau linux (sinon tu vas galérer un peu) ultra-léger (exemple geexbox) et te servir d'un système de livecd pour le lancer...
Sinon ton message perso ... quote numero 8151 de bashfr non?


dou

Hors ligne

#3 Le 28/09/2008, à 02:29

Link31

Re : Mon pseudo OS

Oublie le secteur de boot, il y a Grub ou Syslinux pour ça.

Pour le mode graphique, si tu peux te contenter de 640x480 pixels c'est assez facile, sinon ça risque de poser quelques difficultés si tu utilises Grub. Mais il existe un patch pour Grub qui permet de passer en mode VESA.

À part ce détail, si tu ne comptes qu'afficher une image et pas lancer des programmes en mode utilisateur, utiliser la pagination, faire du multitâche... ça sera assez facile. On peut faire ça en seulement quelques centaines de lignes de code.

Par contre, il faut impérativement avoir déjà de solides bases en C ou C++ avant de toucher à la programmation noyau, même pour aussi peu de code.

edit : dans le cas le plus simple, toutes les images sont chargées au démarrage, et ça peut être long. Si tu veux pouvoir les charger plus tard depuis le CD, il faudra coder un système de fichiers et un driver, ce qui est loin d'être simple. Il vaut mieux intégrer toutes les images dans le noyau.

Mais peut-être devrais-tu essayer de faire un OS minimal basé sur Linux, plutôt que de coder ton propre noyau (comme tu le laisses entendre) ?

Dernière modification par Link31 (Le 28/09/2008, à 02:35)

Hors ligne

#4 Le 28/09/2008, à 09:41

-Brik-Glassman#67~0.0

Re : Mon pseudo OS

Finalement, tu lui conseilles de ne pas utiliser Grub ?! ça vaut mieux car il préfère utiliser un live-cd.

A part montrer ce que tu sais, je ne sais pas si tu l'as vraiment aidé... hmm

#5 Le 28/09/2008, à 15:19

rniamo

Re : Mon pseudo OS

le but à part la curiosité ? Sinon http://www.commentcamarche.net/faq/suje … n-noyau-os te donne quelques début de réponse et http://asm.developpez.com/intro/ pour l'asm est pas mal.
bonus :
http://a.michelizza.free.fr/pmwiki.php? … Bootloader


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#6 Le 28/09/2008, à 17:58

Link31

Re : Mon pseudo OS

-Brik-Glassman#67~0.0 a écrit :

Finalement, tu lui conseilles de ne pas utiliser Grub ?! ça vaut mieux car il préfère utiliser un live-cd.

A part montrer ce que tu sais, je ne sais pas si tu l'as vraiment aidé... hmm

Jusqu'à preuve du contraire, mon message contient plus d'informations utiles que le tien.
Si tu as l'impression de ne pas en savoir assez ou que tu n'as pas compris ce que j'ai écrit, je ne peux rien faire de plus pour toi.

Hors ligne

#7 Le 29/09/2008, à 12:58

Karl_le_rouge

Re : Mon pseudo OS

http://sos.enix.org/fr/PagePrincipale
www.osdev.org/

Hors ligne

#8 Le 29/09/2008, à 17:27

andrelec1

Re : Mon pseudo OS

alors deja merci de toute vos reponce ...
mais j'ai pas tous compri lol
alors oui le 640*480 me suffie

donc en gros je doit prendre Grub et code un truc moi même que grub lance ...
ce truc qu'il faux que je code , je doit le coder en ASM ou en C
je comprend pas ce que vien faire le C
puisque l'on me dit que mon processeur ne comprend que l'ASM compillee ...

bon je vais regarder plus attantivement les page web que vous m'avais donner , et je vais voir ce que je peut faire ...


mathieuI:
, heu oui XD


Je crois que mes chances avec elle sont tellement mince que si on gravait des processeurs a cette epaisseur on atteindrait les 12 ghz.
████████████████████████████
█████████ Black -Out  ███████████
████████████████████████████

Hors ligne

#9 Le 29/09/2008, à 19:58

Link31

Re : Mon pseudo OS

Si tu décides d'utiliser Grub, il te faut un tout petit bout d'assembleur, le reste peut être fait presque entièrement en C.

En pratique, il te suffit de récupérer les fichier multiboot.S, multiboot.h (et sos.lds, le script LD) de SOS (cf. le lien de Karl_le_rouge) et de les compiler avec le reste de ton code, en utilisant les bonnes options.

Quand tu seras dans ton _main(), pour afficher quelque chose à l'écran il faudra écrire à l'adresse 0xb8000, en alternant le code ASCII et le code de couleur.

char* ptr = (char*)0xb8000;
*ptr++ = 'a';
*ptr++ = 15; // blanc sur noir (si je me souviens bien...)
*ptr++ = 'b';
*ptr++ = 15;

La principale difficulté pour commencer est surtout de réussir à compiler le tout, il vaut mieux avoir une bonne connaissance du fonctionnement de gcc, ld, make...

Je pourrais tout t'expliquer en détail, mais ça serait bien trop long. Je préfère te renvoyer à l'article 1 de SOS (le hello world sur fond bleu), qui est assez bien fait je trouve. Les suivants deviennent assez ardus à partir du 4, mais tu n'es pas obligé de les suivre tous à la lettre, n'hésite pas à partir sur une toute autre direction si ça te tente.

Hors ligne

#10 Le 29/09/2008, à 20:04

Didoouuuu

Re : Mon pseudo OS

Hello,

Si ton projet est de réaliser un mini système d'exploitation, c'est un travail de longue haleine.

A cela, plusieurs raisons :

1 - Les compétences pré-requises:
     a - Langage assembleur de ton micro : la forme lisible du code machine
         + éventuellement, les instructions machines dites de programmation système si tu souhaites accèder à la mémoire au delà des 640 Ko.

     L'assembleur, tu en as besoin pour écrire les premières lignes de code exécutés de ton OS (le code de boot) et pour développer des services de bases : gestion de la mémoire virtuelle, gestion des interruptions, des périphériques, le basculement de contexte (si OS multi-tâche), plus généralement, la gestion du processeur.

     b - Les interruptions du BIOS : seuls services logiciels disponibles sur la machine en l'absence de système d'exploitation comme c'est le cas au démarrage du PC.

     c - Le modèle de boot

     d - eventuellement, selon, la sophistication de l'OS : la connaissance de la programmation du gestionnaire d'interruptions programmable : le PIC

2 - La conception :

Il faut refaire la roue. Le minimum requis pour un OS, il faut le coder à moins de trouver des bouts de programme sur internet. Mais le but du jeu pour un puriste, c'est bien de développer le siens, pas forcément d'intégrer des bouts, trouvés à gauche ou à droite.

3 - Les outils de développement

a - Les produits logiciels générés par les outils de développement sont spécifiques à un OS :
- le format des exécutables si possible permettant le caractère relogeable du code exécutable
- la présence des librairies de base de l'OS.

Ce qui veut dire que les premières lignes de code machine de ton OS (logées sur les permiers secteurs de ton disque) qui seront exécutées en premier lors du démarrage de ton PC doivent installer au plus tôt, l'environnement run-time pour exécuter des fichiers exécutables au format Microsoft, ELF ou encore dans un format que tu auras conçu.

Ces fichiers exécutables seront alors générables grâce à un environnement de compilation.
Le premier de ces exécutable pourra être le coeur de ton OS (ou si tu préfères le noyau de ton OS).

b - Comment tester son OS ?

Le debugger : Au début, bien sûr, comme tout programme, il faut le débugger.
Je ne connais pas de débugger qui fonctionne sans OS. Peut-être que quelqu'un en connait, un.

Au début, le code développé plante. Pour une application, c'est facile, on corrige et on relance l'exécutable testé immédiatement.
Tandis que là, il faut relancer la machine ... et ça prend du temps, entre les basculements édition/test.

Une piste, c'est d'exécuter ton OS dans une machine virtuelle.


4 - Conclusion

Bien que je sais de quoi, il en retourne, si je devais me lancer dans un tel projet, je serais bien en peine de l'accomplir. Les mécanismes à maîtriser sont nombreux, les outils de dév à disposition peu nombreux et donc le travail, immense.
Pour moi, développer mon petit OS, est resté à l'échelle du fantasme : manque de temps pour me documenter, pour développer et surtout manque de motivation devant l'ampleur de la tâche.

Si tu lances sur ce projet, je te souhaite le succès car les courageux méritent d'être récompensés de leurs efforts.

Pour ma petite contribution à ta réussite, je te donne un pointeur :

http://www.intel.com/products/processor/manuals/index.htm


Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 1: Basic Architecture

Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 2A: Instruction Set Reference, A-M

Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 2B: Instruction Set Reference, N-Z

Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide

Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 3B: System Programming Guide

#11 Le 29/09/2008, à 20:32

Link31

Re : Mon pseudo OS

Didoouuuu a écrit :

Le debugger : Au début, bien sûr, comme tout programme, il faut le débugger.
Je ne connais pas de débugger qui fonctionne sans OS. Peut-être que quelqu'un en connait, un.

Au début, le code développé plante. Pour une application, c'est facile, on corrige et on relance l'exécutable testé immédiatement.
Tandis que là, il faut relancer la machine ... et ça prend du temps, entre les basculements édition/test.

Une piste, c'est d'exécuter ton OS dans une machine virtuelle.

Ah ça, c'est à mon avis la plus grande difficulté (et de très loin !) dans le développement d'un noyau. Tant qu'on n'a pas mis en place la MMU, on peut coder n'importe comment, et ça plante au hasard. Au moment d'initialiser la MMU, si un seul bout du noyau dépasse ça équivaut à couper la branche sur laquelle il est assis... Et quand vient le moment de lancer un premier programme non-privilégié, si le code n'est pas 100% parfait le processeur ne revient jamais en mode privilégié et on se retrouve devant une machine définitivement plantée. Sans parler des triples fautes, reboot immédiat dans laisser la moindre trace (voire reboot en boucle dans le pire des cas). Et des flags d'optimisation, qui cassent le code quand on passe de -O0 à -O2 si le code n'est pas parfait (il faut aller fouiller dans le code assembleur... roll).

On peut déboguer un noyau depuis une VM, Qemu le supporte. Cependant, ce n'est pas parfait : la plupart des noyaux sont multi-threadés, et le déboguage d'un programme multi-threadé est un enfer, que ce soit un noyau ou pas. Même s'il n'est pas multi-threadé, l'horloge du PC a le temps de passer quelques milliers de ticks entre deux breakpoints, et c'est souvent impossible de suivre le programme par étapes. Enfin, il reste impossible de se connecter sur une VM plantée...

Didoouuuu a écrit :

Bien que je sais de quoi, il en retourne, si je devais me lancer dans un tel projet, je serais bien en peine de l'accomplir. Les mécanismes à maîtriser sont nombreux, les outils de dév à disposition peu nombreux et donc le travail, immense.
Pour moi, développer mon petit OS, est resté à l'échelle du fantasme : manque de temps pour me documenter, pour développer et surtout manque de motivation devant l'ampleur de la tâche.

Allez, il ne faut pas être aussi pessimiste. Il n'y a rien de plus fun que la programmation de noyau. C'est parfois difficile, c'est sûr, mais c'est ça qui est amusant justement.

Je suis sûr que n'importe qui avec un minimum d'expérience en programmation peut terminer les 3 premiers chapitres de SOS. As-tu au moins déjà essayé ?

Hors ligne

#12 Le 29/09/2008, à 21:04

Didoouuu

Re : Mon pseudo OS

Je vais te faire un aveu, des véléïtés, oui
mais passer à l'acte, jamais.

En 98, déjà, pendant mons service militaire, j'avais imprimer, The Linux Guide écrit par un cerain David Rusling (si certains connaissent ... ). J'en avais lu des morceaux pour ma culture. Effectivement, ça donne envie. Mais bon, vu le manque d'outils de dev, ... je n'avais même pas idée duquoi et du comment utiliser les outils de dev de l'époque pour générer les produits logiciels comme tu l'as expliqué : le code de boot par exemple. Parce qu'écrire un programme avec un fichier exécutable à l'arrivée, c'est une chose courante mais là ... ben, je savais pas comment s'y prendre.
Pourtant, ça donnait bien envie en lisant.
ça m'a redonné envie lorsque j'ai relu les doc concernant la gestion de la mémoire virtuelle des doc Intel.
Je me suis amusé à basculer en mode protégé, avec un modèle de mémoire virtuelle type Flat. Et puis, satisfait, je m'en suis tenu là.

Et puis, plus, tôt encore, lorsque j'étais étudiant, j'avais eu à faire un projet de bib thread Posix. C'était sympa de faire en C++, le scheduler.

Ah et puis, récemment, j'ai acheté un bouquin : Le noyau Linux... il orne ma bibliothèque, c'est tout... Achat compulsif sans doute.

ça veut pas dire que je reste inactif dans le dév. Je suis plus attiré par analyse syntaxique, la compilation. J'ai trouvé un environnement assez évolué, développé par une équipe de recherche.
Voilà, voilà
Souhaitez-moi bonne chance... roll

#13 Le 30/09/2008, à 02:25

nicolas66

Re : Mon pseudo OS

Bonne chance ^^


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#14 Le 30/09/2008, à 17:34

Didoouuuu

Re : Mon pseudo OS

nicolas66 a écrit :

Bonne chance ^^

merki ;°)

#15 Le 30/09/2008, à 17:39

Didoouuuu

Re : Mon pseudo OS

Je crois que je fais une rechute : compte des renseignements fournis sur le topic, j'ai envie de faire un petit quelque chose.

Merci Karl et Link.
Byyyyeeee smile:):):)