Autor Thema: Trick: Eigenes OS als ISO  (Gelesen 3878 mal)

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« am: 29. October 2012, 14:44 »
Dieser Artikel bezieht sich auf MS-Windows.
Un sein OS zu testen, muss man es nicht immer mit RawWrite duf Diskette schreiben. Es gibt Trick sein OS auch auf der VM von Oracle laufen zu lassen.

Dafür wird benötigt:
  • Ein OS (mindestens kernel + bootloader)
  • Die Eingabeaufforderung (auf jeden Windows-PC)
  • Oracle VM VirtualBox (oder VirtualPC, ... . Aber es Funktioniert auf jeden Fall mit VM VirtualBox)
  • Nero Burning ROM

Das wars auch schon.

Undere Fertigen .bin (nur Kernel u. Bootloader) Dateien kopieren wir zu einer .img (Eingabeaufforderung):
copy bootloader.bin+kernel.bin MeinOS.img
Dann öffnen wir unser Nero Burning Rom (ich verwende die Version 12, mit der Test-Version geht es auch).
Es öffnet sich automatisch ein Fenster "Neue Zusammenstellung". Dort wählen wir dann rechts "CD-ROM (Boot)" und wählen unter "Startoptionen", "Image-Datei" und dann unsere .img-Datei (MeinOS.img in diesen Fall). Mit dem Button "Neu" schliest sich das Fenster und wir können noch weitere Dateien hinzufügen. Aber da wir keine CD wollen, müssen wir anstatt unserem CD Laufwerk "Image Recorder" auswählen (oben in der Mitte). Wir klicken auf "Brennen" und nochmals (im neu geöffnetem Fenster) auf "Brennen". Dann müssen wir den Speicherort und Namen auswählen. Als Datei-Format unbedingt "*.iso" wählen. Es wird eine Datei erstellt, welche man einfach in der VM als CD-Image wählt. Nur noch die VM starten und zuschauen.

Man kann das OS natürlich auch auf eine CD brennen. Dafür einfach anstatt "Image Recorder" unser CD-Laufwerk wählen.
Woher ich das weiß? Keine Ahnung.

chris12

  • Beiträge: 134
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 31. October 2012, 16:10 »
man kann auch einfach bei virtualbox als start medium eine diskette auswählen und das image auswählen ...
OS? Pah! Zuerst die CPU, dann die Plattform und _dann_ das OS!

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 01. November 2012, 13:31 »
man kann auch einfach bei virtualbox als start medium eine diskette auswählen und das image auswählen ...


Wie machst du das? Meldung der VirtualBox wenn ich das Image wähle:

Zitat von: VirtualBox
Die Das Diskettenabbild <pfad>\OS.img konnte nicht geöffnet werden.

Could not get the storage format of the medium '<pfad>\OS.img' (VERR_NOT_SUPPORTED).

Fehlercode:VBOX_E_IPRT_ERROR (0x80BB0005)
Komponente:Medium
Interface:IMedium {29989373-b111-4654-8493-2e1176cba890}
Callee:IVirtualBox {3b2f08eb-b810-4715-bee0-bb06b9880ad2}
Callee RC:VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
Ich erstelle es einfach mit "copy". Den Pfad habe ich für dieses Zitat durch <pfad> ersetzt.
« Letzte Änderung: 01. November 2012, 13:34 von FlorianN »
Woher ich das weiß? Keine Ahnung.

Jidder

  • Administrator
  • Beiträge: 1 623
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 01. November 2012, 13:34 »
Ich vermute das liegt daran, dass das Image nicht 1,44 MB groß ist.
Dieser Text wird unter jedem Beitrag angezeigt.

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 01. November 2012, 13:36 »
Ich vermute das liegt daran, dass das Image nicht 1,44 MB groß ist.
Kann sein. Wie bekomme ich das so groß?
Woher ich das weiß? Keine Ahnung.

micha

  • Beiträge: 141
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 01. November 2012, 13:55 »
Wenn du GRUB benutzt kannst iso- und disketten-images auch ohne nero erstellen.
schau dazu mal hier http://www.lowlevel.eu/wiki/GRUB
Die funktionieren dann auch in deinem emulator ;)

Jidder

  • Administrator
  • Beiträge: 1 623
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 01. November 2012, 14:01 »
Als Alternative hab ich eine Batch-Datei im Angebot, die das Image vergrößert:

@SET _=-_-_-_-_-_
@SET __=%_%%_%%_%%_%%_%%_%%_%%_%%_%%_%
@SET ___=%__%%__%%__%%__%%__%%__%%__%%__%%__%%__%
@FOR /L %%I IN (%~z1,1000,1473559) DO @<NUL SET /P=%___%>>%1
@FOR /L %%I IN (%~z1,100,1474459) DO @<NUL SET /P=%__%>>%1
@FOR /L %%I IN (%~z1,10,1474549) DO @<NUL SET /P=%_%>>%1
@FOR /L %%I IN (%~z1,1,1474559) DO @<NUL SET /P=_>>%1

Einfach mit dem OS.img als Parameter aufrufen. Windows > All
Dieser Text wird unter jedem Beitrag angezeigt.

chris12

  • Beiträge: 134
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 01. November 2012, 14:12 »
aus diesem grund verwand ich fast nur bochs, erstens weil debugging etwas einfacher war, zweitens, wenn man da angab, hey das soll ne 1,44 Diskette sein und die datei kleiner war, war es dem egal ...
ergo ...
OS? Pah! Zuerst die CPU, dann die Plattform und _dann_ das OS!

Svenska

  • Beiträge: 1 778
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 01. November 2012, 15:45 »
Baut euch doch einfach ein Script, welches ein korrektes Image erzeugt... dd + mtools + syslinux/grub gibt es in der Paketverwaltung oder auch als Win32-Ports...

Mein Makefile kann übrigens "make qemu", was das Testen vereinfacht.

Gruß,
Svenska

tiger717

  • Beiträge: 84
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 01. November 2012, 16:07 »
Eine seeehr einfache Möglichkeit zum Debuggen:
Einmalige Einrichtung:
1. Unter Entwicklungsverzeichnis Ordner iso erstellen
2. Bei iso/boot/grub die grub.cfg erstellen, z.B.:
set timeout=10
set default=0

menuentry "OS-Name"
{
    multiboot /pfad/zu/kernel/kernel/datei
    boot   
}
(Aus dem Wiki)

In der makefile:
# ...

debug-qemu: image  # zuvor Kernelimage erstellen
    @cp kernel.o iso/zuvor/angegebener/pfad/kernel.img  # Kernel kopieren
    grub-mkrescue -o tmp/core.iso   # GRUB2-Image erstellen
    qemu -cdrom tmp/core.iso   # QEMU starten

# ...

Um iso auf eine echte CD-ROM zu bekommen:
dd if=tmp/core.iso of=/dev/cdrom

Einziger Minuspunkt: grub-mkrescue kann ein bisschen dauern, geht aber normalerweise recht zügig.

P.S. Die anderen Möglichkeiten, ein GRUB2-Image zu erstellen verliefen (bei mir) zumeist erfolgslos, während grub-mkrescue sofort funktioniert hat.

micha

  • Beiträge: 141
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 01. November 2012, 16:08 »
Mein Makefile kann übrigens "make qemu", was das Testen vereinfacht.
Meins auch :D Mit Qemu kann man den kernel aber nur direkt laden, wenn man er multibootkompatibel ist.

FlorianN

  • Beiträge: 50
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 01. November 2012, 20:07 »
Als Alternative hab ich eine Batch-Datei im Angebot, die das Image vergrößert:
gut! der läuft! cool
Woher ich das weiß? Keine Ahnung.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 02. November 2012, 09:26 »
Mein Makefile kann übrigens "make qemu", was das Testen vereinfacht.
Meins auch :D Mit Qemu kann man den kernel aber nur direkt laden, wenn man er multibootkompatibel ist.
Man kann das "make qemu" auch so schreiben, dass es erst ein Image baut und dann qemu damit startet. Später wenn man fürs Booten wichtige Dateien auf dem Dateisystem hat, will man das sowieso.

Was natürlich nicht heißt, dass man kein Multiboot benutzen soll.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen