Serveurs dédiés - BYOI - format attendue
... / BYOI - format attendue
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

BYOI - format attendue

Von
Jean-MichelK
Erstellungsdatum 2024-11-20 17:08:34 in Serveurs dédiés

**Installation d'une image raw sur un serveur dédié.**

Bonjour la communauté OVH,

Je travaille sur un projet de création d'un "**Hello World**" en mode serveur 64 bits.
Comme c'est une question un peu complexe je me suis permis de faire une vidéo visible ici : Vidéo explicative si vous voulez en savoir plus.

**Après continuons sur la question:**
Ce que je tente de faire c'est d'installer une image bootable sur le serveur. C'est celle qui se lance dans la vidéo avec la commande **qemu-system-x86_64 $(QEMUKVM) -serial mon:stdio -hda out/Taurifs2.img -smp $(CPUS) $(QEMUNET) -m 1024 -no-reboot**.
Bien sur, avant de me lancer dans l'opération j'ai bien lue la documentation fournie par OVH.

image

Le fichier raw est constitué d'un MBR, stage1, un FileSystem qui contient l'OS, executables, fichiers utiles pour faire fonctionner cet OS. En théorie il y'a tout pour démarrer sur une vrai machine.

image
Maintenant lorsque je tente de le charger sur le serveur dédié j'ai ce message:

image

En première intention j'ai ouvert un ticket, mais il est évident que cela dépasse les compétences du support (je ne leur jette pas la pierre, c'est vraiment une question complexe). Donc je me tourne vers la communauté, voir si quelqu'un à déjà tenté cela. Apparemment il n'existe aucune information sur le format attendue ni de tutorial.

Merci de votre retour.


10 Antworten ( Latest reply on 2025-03-28 16:19:13 Von
Jean-MichelK
)

Bonjour,

Comment avez-vous créé votre image ?

 

Bonjour,

parfois poser la question permet de trouver la réponse.

Alors comment je fait:

  • Compilation du stage0.S
  • Compilation du stage1.S
  • Compilation du stage2.c
  • Compilation et link du kernel
  • Compilation des executables utilisateur (mkdir, cp, etc)

Après je crée une structure fichier qui contient l'arborescence avec le kernel, executables les fichiers divers (ico, png, txt, html, css, jpg, ...), la base de donnée, les dossiers utilisateurs, etc.

Je passe tout ça dans un executable qui assemble dans un fichier raw les secteurs (512 octets) avec les 3 stages et qui crée le Filesystem avec l'arborescence.
Puis j'inscris dans la Partition table les informations. C'est là que je me suis dit: peut-être qu'il test la validité de la partition, et probablement que les octets 511 et 512 valent 0x55, 0xAA.

Donc j'ai retravaillé cette partie et miracle c'est passé. C'était bien le sens de ma première question: Quel format attendue? Comme je travaille sur un nouvel OS j'ai utilisé cette zone pour mes besoins. Heureusement j'avais à peu près suivie le standard donc la modification a été légère.

Bon maintenant sur une vrai machine l'OS ne se lance pas. Faut que je continue les tests.

Bonjour,

Si vous choisissez le format raw, le fichier doit correspondre à ce qui se trouve sur le disque de la machine. SI vous lancez parted Taurifs2.img, il doit voir votre table des partitions, c'est ce test qui est effectué à l'installation. C'est étonnant que l'image fonctionne avec QEMU mais ne contienne pas de table des partitions.

Bonjour,

si si y'a bien une partition table sur mon projet. Sauf qu'au début je l'avais un peu adapté a mes besoins. Je l'ai remis d'équerre avec le standard et effectivement l'image s'installe.

Maintenant il crash au boot. Je pensais que si QEMU sait traiter une véritable machine saurait aussi, mais c'est pas le cas.

Pour le moment je sais que le stage0 passe, le stage1 fonctionne juste avant le passage 16/32 bits. Chaque essai c'est 15 minutes au moins ...

Je continue, je vais mettre une trace dans le stage2 et ensuite voir s'il enchaine sur le kernel.

Bonjour et bonne année 2025.

Pour continuer le sujet, après pas mal d'essais et de galères je boot sur le serveur avec stage0, stage1, stage2 et lancement d'un main en 64 bits.
J'ai refait complètement le bootloader. Sur une machine réel le placement du gdt et le système de lecture des secteurs fonctionne sur QEMU mais pas sur le hard.

Alors ce n'est pas mon OS encore vraiment, juste un bon test. Je récupère le magic et le mbi sur l'OS 64 bits. Donc le multiboot est OK.
Maintenant je vais remettre tous le code. Suite bientôt.

C'est bien velu comme projet !

Pour continuer sur le sujet, enfin j'ai réussi a trouver tous les bugs. Il y'a vraiment un décalage entre une émulation par QEMU et de vrai machines. Je ne parle pas des bugs sur les processeurs, qui fait que ce qui est autorisé par la doc ne fonctionne pas. Donc y'a qu'une seule façon de gérer les disques au boot.

Maintenant j'ai un bootloader complet et il lance bien un kernel 64 bits de test. Prochain boulot réintégrer tout ça dans mon projet.
Ici c'est en mode texte mais il sait gérer les différents modes graphiques VGA.

C'est une petite victoire, vue que je travaille sur le sujet que quand je ne travaille pas pour d'autres entreprises:

Enfin le contrôleur ATA fonctionne en 64 bits, sur QEMU, VirtualBox et sur le serveur d'OVH. Il ne fonctionne pas sur mon Lenovo local mais c'est moins grave.

Il reste que le serveur a 32 Go de RAM et je les voie pas sur la carte e820. Là je détecte 0 à 8B000 et 10000 à 7DCA8000 (ce qui est logique) et 0? 80000000. Faudra que je change le mapage du kernel si je veux gérer plus que 4Go.