Autor Thema: OS unter Qemu starten  (Gelesen 6546 mal)

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« am: 07. January 2006, 18:42 »
Hallo alle zusammen,

nachdem ich mich jetzt umgehend mit C beschäftigt habe, bin ich auf eure Seite gestossen und wollte auch gleich mal ein paar Tutorials ausprobieren.
Leider basieren ja die meisten Beispiele darauf, dass man ein Floppylaufwerk besitzt und dieses dazu nutzen kann das OS zu booten. Leider besitze ich eben kein Floppylaufwerk.
Also habe ich unter Linux nun Qemu installiert um damit ein paar Beispiele und vielleicht später auch mal ein paar Kleinigkeiten von mir auszuprobieren.

Nun weis ich nur nicht, wie ich z.B. eine vorliegende Kernel.bin, die man normal von Diskette bootet, auf Qemu zum laufen zu bringen. Wäre für schnelle Hilfe dankbar, damit ich auch gleich mal ein paar Beispiele ausprobieren kann.

Schonmal vielen Dank
  creeky

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 07. January 2006, 18:55 »
Qemu kann (wie alle anderen Emulatoren) nur ganze Images lesen. Das heißt du musst ein Diskettenimage erstellen. Wenn du noch kein FAT oder ein anderes Dateisystem unterstützt ist das einfach:
cat bootsector.bin kernel.bin > image.img
qemu -fda image.img -boot a
Mehr ist nicht nötig um das Image zu erstellen und zu booten.

Wenn du aber schon ein Filesystem hast wird die Sache komplizierter:
Du brauchst eine 1.44MB große Datei die du z.B. mit mkdosfs mit FAT formatiertst. Anschließend kannst du einen Unterordner erstellen (z.B. temp) und das hier ausführen:
mount -o loop image.img temp
Jetzt kannst du in den Unterordner temp deinen Kernel kopieren. Anschließend unmountest du das image wieder:
umount image.img
Zuletzt musst du mit
dd if=bootsector.bin of=image.img
den Bootsector kopieren.
Danach kannst du wieder mit
qemu -fda image.img -boot a
booten.

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 07. January 2006, 19:45 »
Vielen Dank für die schnelle Antwort.

Ich habe zum Ausprobieren einmal den Bootloader und den Kernel aus der ersten Lowlevel ausgabe genommen (http://lowlevel.brainsware.org/index.php?pagename=tutorials&showtut_id=1#OS%20Dev-Tutorial,%20Teil%201).

Habe dann ganz normal die beiden Assembler-Dateien kompiliert und dann wie von DarkThing beschrieben mit Hilfe von
cat boot.bin kernel.bin > image.img
qemu -fda image.img -boot a
gestartet.

Leider bleibt dann in Qemu der Ladevorgang bei "Loading..." stehen und der Rest wird nicht mehr angezeigt.

An was kann das liegen?

 

Einloggen