IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation d'OS Assembleur Discussion :

Compilation du noyau en C et du bootloader.


Sujet :

Programmation d'OS Assembleur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2018
    Messages : 13
    Points : 0
    Points
    0
    Par défaut Compilation du noyau en C et du bootloader.
    Bonjour,
    Je suis actuellement le cours de Michelizza sur le développement d'OS.
    Jusque là j'ai un peu de mal avec la mémoire qui n'est, je trouve, que vaguement abordée. (On donne du code et il n'est malheureusement que très peu expliqué)
    Je ne comprend déjà pas vraiment les schémas sur la mémoire mais ce n'est pas vraiment le problème.
    Une fois que le noyau à été entièrement écrit en C j'arrive à 'linker' (si c'est le bon mot) les fichiers objets avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -c kernel.c
    gcc -c screen.c
    ld --oformat binary -Ttext 1000 kernel.o screen.o -o kernel.bin
    Mais le fichier qui est générer est bien trop grand (4M) alors que les fichiers objet ne dépassent pas les 3K.
    J'utilise la commande suivante pour créer l'image disque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat *.bin /dev/zero | dd of=floppy.img bs=512 count=2880
    Voici mon problème, je lance le fichier img avec VirtualBox mais seulement le bootloader s'exécute, la suite du programme (chargement du noyau) plante.
    Si vous voulez vérifier le code je l'ai posté sur mon github. (ce n'est qu'une copie presque identique aux codes du cours original)
    Je rajouterai également que je suis ce cours pour en apprendre plus sur le fonctionnement d'un ordinateur.
    Merci d'avance.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2018
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    Pour préciser ma demande, le fichier image ne pouvant dépasser la taille de 2.8MB je doute que mon noyau qui fait 4MB une fois linker puisse être contenue dans le fichier image.
    Comment puis-je donc remédier à cela ?
    Merci.

  3. #3
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    j'ai parcourus le programme du bootloader et il n'y as rien qui semble clocher. par contre la limite de ton fichier c'est pas 2.88Mo mais 1.44Mo-512o (une disquette moins le bootsecteur) et en plus le bootloader ne charge que 50 secteurs soit 25600 octets
    par contre je suis pas un spécialiste du C donc je comprend pas ce qui ne vas pas dans le noyau

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2018
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par bifur Voir le message
    j'ai parcourus le programme du bootloader et il n'y as rien qui semble clocher. par contre la limite de ton fichier c'est pas 2.88Mo mais 1.44Mo-512o (une disquette moins le bootsecteur) et en plus le bootloader ne charge que 50 secteurs soit 25600 octets
    par contre je suis pas un spécialiste du C donc je comprend pas ce qui ne vas pas dans le noyau
    Merci.
    En fait, la seul chose qui semble clocher c'est que le code binaire produit par le compilateur C est de 4M, ce qui ne rentre bien évidemment pas dans une disquette. Je me demande donc comment je peut générer une image iso qui serait démarrable avec VirtualBox. J'ai beau essayé avec la commande dd mais comme l'auteur n'explique pas comment faire je suis coincé.

    Je me demande d'ailleurs pourquoi utiliser des fichiers image qui sont limité ? Pour être compatible avec bochs et qemu ?

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 352
    Points : 42 824
    Points
    42 824
    Par défaut
    Que donne la commande :
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2018
    Messages : 13
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Que donne la commande :
    J'obtiens ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	n'est pas un exécutable dynamique

  7. #7
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour
    @Filadelphila, Pourriez-vous nous fournir les sources du fichier "UTIL.INC" ?
    À bientôt.
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

Discussions similaires

  1. Erreur de compilation du noyau
    Par pierreg dans le forum Administration système
    Réponses: 12
    Dernier message: 31/01/2007, 19h53
  2. Compiler le noyau
    Par Thrystan dans le forum Debian
    Réponses: 16
    Dernier message: 14/08/2006, 12h47
  3. Compilation du noyau avec le logiciel freeswan
    Par popov2 dans le forum Administration système
    Réponses: 9
    Dernier message: 14/12/2005, 14h26
  4. Problème de compilation de noyau
    Par dumdum dans le forum Administration système
    Réponses: 2
    Dernier message: 21/10/2005, 11h08
  5. Compilation du noyau, "make" sous debian
    Par romca dans le forum Administration système
    Réponses: 7
    Dernier message: 24/02/2005, 19h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo