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

 C++ Discussion :

Boot a partir d'un programme C++ build avec make


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut Boot a partir d'un programme C++ build avec make
    Je travaille sur une machine virtuelle ubuntu, j'ai un code c ++ pour un os, je l'ai construit en utilisant la commande make, de nouveaux fichiers sont apparus sur mon dossier, maintenant j'essaye de démarrer a partir de ce dossier. le fichier readme dit: il peut être démarré à partir d'un bootloader compatible multiboot, tel que GRUB; un exemple pour démarrer à partir du disque dur 0, partition 0

    titre OS1
    kernel (hd0,0) / boot / OS1 /
    module hyperviseur (hd0,0) / ... ...
    J'ai du mal à comprendre cela étant donné que je suis un peu nouveau à ce sujet, j'ai déplacé tout le dossier construit sous le répertoire / boot, que puis-je faire pour l'amorcer, dois-je simplement ajouter les lignes dans l'exemple du fichier grub.conf (j'utilise sda1, et la partition bootable est sda2) et redémarrer, ou faire je dois créer une nouvelle partition et apporter d'autres modifications au système
    merci

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    A priori, tu n'as qu'à rajouter la ligne d'exemple dans ton grub.conf, et à rebooter

    EDIT: entre les deux, il faudra sans doute quand même penser à faire un update-grub (en tant que root)...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut
    Bonjour,
    Merci pour ta reponse , l'exemple est le suivant :
    Boot from harddisk 0, partition 0

    title NINI
    kernel (hd0,0)/boot/nini/hypervisor
    module (hd0,0)/...
    ...

    je suppose que le repertoire hypervisor est celui qui contient tout les composant du code , pas seulement le repertoire build ( qui contenait makefile et que j'ai builder avec make , la jai pas mal de fichier dans ce repertoire ) ,que doit contenir le chemin de module dans lexemple
    aussi jai monté /boot/mini/hypervisor sur sda3 ,
    je crois que j'ai raté quelque chose parceque meme apres avoir ajouté les deux lignes de lexample , et update-grub , jai lerreur quand je veux ouvrir NINI sur le grub
    merci

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Bon, reprenons depuis le début:

    1- qu'est ce que tu as créé un noyau ou un bootloader

    2 a- Si c'est un noyeau (ce que semblent indiquer tes questions):


    1. Seuls les fichiers résultat de la compilation sont théoriquement nécessaires.
    2. tu dois "juste" veiller à ce qu'il soit sur une partition accessible (je ne sais plus si elle doit être marquée "bootable" ou non... je crois que oui), et à mettre grub correctement à jour.Pour ce faire, il faut:
      1. ajouter l'entrée vers ton noyau au grub.conf
      2. lancer update-grub pour qu'il soit pris en compte.


    2 b -Si c'est un bootloader (comme il est -- par exemple -- expliqué comment faire ==>ICI<==), alors les choses sont plus complexes, parce que:
    1. Si cela n'a pas changé, le bios démarre en mode 16 bits, ce qui implique un mode de compilation particulier
    2. le bootloader doit être placé spécifiquement sur le secteur 0 du disque dur (c'est là que va se cacher une partie de grub)
    3. la première instruction est forcément recherchée à l'adresse 7C00 du secteur. (si cela n'a pas changé depuis)
    4. Il y a peut-être d'autres joyeuseté à prendre en compte


    Quoi qu'il en soit, les deux situations sont totalement différentes, comme tu peux t'en rendre compte
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut
    BONJOUR, je m'excuse pour ce retardvetmerci beacoup pour cette reponse , oui j'ai essayé ces étapes:
    • J’ai telechargé le code source sur ma machine ubuntu 14 (https://github.com/udosteinberg/NOVA), je lai build avec make , jai ensuite créer une partition que jai monté sur /boot/NOVA ( jai meme essayé /boot/NOVA/build
    • J’ai ensuite utilisé grub customizer pour ajouter NOVA au grub , ( jai utilisé le chainloader)
    • Ceci a causé :
    • La creation d’un fichier 44_custom_proxy (que jai ensuite renommé a 11_nova_proxy) dans /etc/grub.cfg/ quicontient :
    Code diff : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!bin/sh
    #This is a gub proxy script 
    ‘/etc/grub.d/proxifiedScipts/nova’ | /etc/grub.d/bin/grubcfg_proxy ‘’+*+#text
    -‘Nova-hyp’ ~009344343………….6d~
    +‘nova boot’ ~009344343………….6d~

    Et un entrée a été ajoutée au grub.cfg :

    Code other : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Menuentry ‘’nova boot’’ {
      Set root=’(hd0,3)’	
    search –no-floopy –fs-uuid –set 3780446f-f902-4572-a8b7-dce7C99bb570
    drivemap –s (hd0) ${root}
    chainloader +1 }

    Quand je redemarre , jai nova apparait sur ma liste ; mais des que jappuie dessuis ,j’attends deux secondes que ca demarre et puis j le message ‘
    error: invalid signature.
    Press any key to continue ...

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Là, en gros, grub te dit que la signature du noyeau est invalide. Et ca sort un peu de mes compétences

    Je vois deux possibilités à cet état de fait:
    1. l'id de la partition n'est pas correcte ou
    2. d'une manière ou d'une autre, tu as introduit une signature au niveau de ton noyeau, et tu ne l'a pas correctement recopiée dans grub.

    Voici à quoi ressemble l'une des entrées dans mon grub.cfg:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-889a8db6-d8c0-4127-863b-29fa453fb3ec' {
    	load_video
    	insmod gzio
    	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    	insmod part_msdos
    	insmod ext2
    	set root='hd2,msdos1'
    	if [ x$feature_platform_search_hint = xy ]; then
    	  search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos1 --hint-efi=hd2,msdos1 --hint-baremetal=ahci2,msdos1  4c7ead2f-f692-4894-9f09-ee07930b8baf
    	else
    	  search --no-floppy --fs-uuid --set=root 4c7ead2f-f692-4894-9f09-ee07930b8baf
    	fi
    	echo	'Chargement de Linux 4.9.0-4-amd64…'
    	linux	/vmlinuz-4.9.0-4-amd64 root=UUID=889a8db6-d8c0-4127-863b-29fa453fb3ec ro  quiet
    	echo	'Chargement du disque mémoire initial…'
    	initrd	/initrd.img-4.9.0-4-amd64
    }
    Comme tu peux le voir (ou non):
    --set=root 4c7ead2f-f692-4894-9f09-ee07930b8baf correspond à l'id de la partition qu'il doit utiliser et
    root=UUID=889a8db6-d8c0-4127-863b-29fa453fb3ec correspond (si je ne m'abuse) à la signature du noyau qui être lancé
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. executer un processus a partir d'un programme source
    Par sofiane44 dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 08/01/2006, 14h20
  2. Lancer une application à partir d'un programme
    Par Bouguennec dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 05/11/2005, 19h02
  3. Réponses: 3
    Dernier message: 28/10/2005, 10h01
  4. Réponses: 3
    Dernier message: 03/06/2003, 13h16
  5. Réponses: 4
    Dernier message: 16/01/2003, 14h42

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