Forum Linux.général Construire un boot grub pour un OS sur un DD en ext2

Posté par (page perso) .
Tags : aucun
2
25
nov.
2010
Bronsoir,

j'essaye de remettre à flot un petit OS qui vient de se libérer en GPLv3. Celui-ci fonctionne, mais sa séquence de boot supose d'installer freedos et de compiler un programme sous dos qui va installer le boot de l'OS.

J'aimerai faire en sorte que cet OS boot en utilisant grub, et ce, sur une partition ext2 (l'OS supportant ce type de format de FS).

En m'inspirant de ce tuto j'arrive à créer sans problème une disquette ou j'ai ma séquence de boot comme il faut. Le code se compile bien, on se retrouve donc avec un "OS" qui démarre.
Il ne me manque plus qu'à faire le saut qui va bien pour faire tourner le mien.

Malheureusement, ce tuto ne permet que de créer une disquette.
Hors, j'ai besoin d'un disque dur (virtuel) d'au moins 32Mo pour être à l'aise (ya une interface graphique dans l'OS).

Et lorsque je tente en détournant la procédure, d' installer le boot sur mon disque dur, je n'y parviens pas.
Google n'est pas mon ami non plus..

Que dois-je faire ? Installer un mini OS pour installer grub et virer ensuite l'OS ?
Réussir à configurer grub pour qu'il comprenne bien que mon image contient un disque ?
  • # image de la disquette et grub

    Posté par . Évalué à 3.

    suffit peut-etre simplement de faire un image disque de la disquette (avec DD par exemple)

    puis de dire à grub de booter sur cette image, qui elle va booter sur le disque

    car si j'ai bien compris tu arrives à booter sur l'OS qui se trouve sur le disque dur, en utilisant une disquette
    • [^] # Re: image de la disquette et grub

      Posté par (page perso) . Évalué à 2.

      Et lorsque je tente en détournant la procédure, d' installer le boot sur mon disque dur, je n'y parviens pas.
      J'ai pas été assez clair dans mon explication :-)
      J'ai essayé cela, en modifiant la taille de la "disquette". Et je tombe sur un "Geom erreur" lorsque Grub boot.
      Donc c'est une piste qui malheureusement ne marche pas, d'où ce post :-)

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

  • # PLus d'infos?

    Posté par (page perso) . Évalué à 3.

    Peux tu mettre ton script modifié? Histoire de voir si tout semble correct pour nous aussi...

    ++
    • [^] # Re: PLus d'infos?

      Posté par . Évalué à 2.

      oui, comme le demande Benjamin, un peu plus d'info que juste

      un petit OS qui vient de se libérer en GPLv3 [...]sa séquence de boot supose d'installer freedos et de compiler un programme sous dos qui va installer le boot de l'OS.

      ben deja faudrait savoir quel OS
      ensuite s'il compile un programme via DOS pour installer le bootloader,
      il faudrait savoir ce que c'est comme bootloader
      ce que fait ce bootloader

      pour savoir si grub peut remplacer ce bootloader
      • [^] # Re: PLus d'infos?

        Posté par (page perso) . Évalué à 2.

        Je pense que grub peut remplacer ce bootloader, car l'OS est compilé suite à un fichier en C, et qu'il me faut donc faire un jump sur le point d'entrée (main tout simplement) comme c'est très bien montré dans le lien que je pointe plus haut :
        http://a.michelizza.free.fr/pmwiki.php?n=TutoOS.Grub

        Le code d'init est en effet très simple :

        start:
        push ebx
        call kmain

        cli ; stop interrupts
        hlt ; halt the CPU


        Le code est ici http://git.debian.org/?p=lisaac/application.git;a=tree;f=isa(...) et si tu regardes dans x86/bootloader/startup.asm , tu pourras voir qu'en gros on fait un jump après avoir activé le mode protégé :-)

        « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

    • [^] # Re: PLus d'infos?

      Posté par (page perso) . Évalué à 2.

      Le script :

      dd if=/dev/zero of=hddIsaac bs=1024 count=8192

      mkfs hddIsaac


      # montage de l'image
      mount -o loop -t ext2 hddIsaac /mnt/loop
      #
      # # creation de l'arborescence initiale
      mkdir /mnt/loop/grub
      #
      cp /boot/grub/stage* /mnt/loop/grub
      #
      cat > /mnt/loop/grub/menu.lst << EOF
      title=Pepin
      root (fd0)
      kernel /kernel
      boot
      EOF

      cp kern/kernel /mnt/loop
      umount /mnt/loop
      #
      # # installation de grub
      grub --verbose --device-map=/dev/null << EOF
      device (fd0) hddIsaac
      root (fd0)
      setup (fd0)
      quit
      EOF

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.