#1 Le 17/05/2008, à 20:16
- SamyAzerty
developpement noyau linux pour logramOS
Bonjour à tous, peut être connaissez vous le projet logram (http://logram.live-heberge.com, logram.project@gmail.com). Nous avons un bug important dans le noyau: il y a un bug quand on passe en mode long, si vous pouvez nous aider ce serait très très sympa!
ah oui, bien sur, logram est un sytème libre, actuellement en version 0.0.2, c'est à dire avec un makedisk, stage1 et 2, et sans interface graphique
Azerty, co-directeur du projet logram, utilisateur d'ubuntu et fedora (surtout ubuntu :-) )
#2 Le 17/05/2008, à 20:48
- Link31
Re : developpement noyau linux pour logramOS
Je n'ai pas vu de bug, juste quelques lignes qui défilent dans Qemu, puis un hlt.
En même temps, je ne vois pas comment un membre quelconque d'un forum quelconque qui n'a strictement rien à voir avec ton projet pourrait comprendre à lui tout seul de quel bug il s'agit, et comment le corriger
Hors ligne
#3 Le 17/05/2008, à 21:01
- samyazerty
Re : developpement noyau linux pour logramOS
en lisant les sources, non? mais j'ai oublié de le dire: elle sont dispo sur le wiki dont j'ai djéà donné les lines. et toi, tu fais parti du projet ou t'es juste allé voir comme ça. et le bug ne se produit que lors, citation: du passage en mode Long.
#4 Le 17/05/2008, à 21:27
- Link31
Re : developpement noyau linux pour logramOS
Je n'a pas besoin de savoir quand il se produit (ça je le sais déjà, cf. le premier post), mais qu'est-ce qu'il se passe pour que tu considères ça comme un bug
Parce que je pourrais très bien me dire que le seul intérêt de ce kernel est d'afficher 20 lignes de debug puis de rentrer dans une boucle infinie, puisque c'est tout ce qu'il semble faire pour l'instant.
edit : effectivement, c'est tout ce qu'il fait :
asm("hlt");
for (;;);
switchmode(&monPLM4E);
En recompilant tant bien que mal le stage2 (tu devrais revoir un peu tes Makefiles, ils ne recompilent pas tout le nécessaire après une modification du code), je lui ai fait appeler la fonction, et là le bug s'est (enfin) produit.
Il est clairement au niveau de l'activation de la pagination :
mov eax, cr0
bts eax, 31
mov cr0, eax
Tu devrais vérifier que tes tables de pages sont correctes. La moindre erreur ne pardonne pas avec ça.
Plus d'infos ici :
http://www.osdev.org/wiki/Paging#Example
http://www.osdev.org/wiki/Identity_Paging
Dernière modification par Link31 (Le 17/05/2008, à 22:20)
Hors ligne
#5 Le 20/05/2008, à 16:13
- steckdenis
Re : developpement noyau linux pour logramOS
Bonjour,
Je suis steckdenis, l'administrateur et réateur du projet.
Je tiens à vous remercier pour les liens que vous avez donné. Puisque vous le demmandez, voici la description complète du bug :
Ce bug se produit au passage en mode Long, volontairement désactivé pour l'occasion.
Le bug est un reset de l'ordinateur sur un Triple Fault. J'ai essayé de mettre en place une IDT et un gestionnaire d'exceptions dans Stage2 en mode Protégé, mais rien à faire, c'est le Triple Fault instantané.
J'en ai déduit que ce Triple Fault se produit dans la phase critique dans laquelle le processeur est déjà en mode Long (et ne gère plus les exceptions exactement de la même manière), mais pas encore dans un code normal.
J'ai aussi soupconé les tables de pagination, mais elles semblent correctes après relecture du code.
Bien à vous, et merci pour votre attention et votre aide.
Hors ligne
#6 Le 22/05/2008, à 18:16
- Link31
Re : developpement noyau linux pour logramOS
Désolé, mais je n'ai pas du tout assez de temps en ce moment pour déboguer le code d'un kernel. En plus je suis bien plus habitué au mode 32 bits.
Mais vous devriez essayer d'exposer votre problème sur les forums d'OSDev.org, je suis sûr que quelqu'un pourra vous répondre.
Dernière modification par Link31 (Le 22/05/2008, à 18:16)
Hors ligne
#7 Le 23/05/2008, à 11:42
- steckdenis
Re : developpement noyau linux pour logramOS
Merci beaucoup pour votre proposition, je vais le faire, mais le problème est que OSDev.org est en anglais, et que mon anglais n'est pas ce qui se fait de mieux.
Merci beaucoup pour votre aide.
EDIT: Le problème est arrangé, j'ai recopié la mise en place de la pagination sur un autre mini-os, et j'ai remarqué que je me trompais au moment du "jmp" qui passe en mode Long. Encore merci pour votre aide.
Dernière modification par steckdenis (Le 25/05/2008, à 08:39)
Hors ligne