Lowlevel

OffZone => Offtopic => Thema gestartet von: FlorianN am 29. October 2012, 14:44

Titel: Trick: Eigenes OS als ISO
Beitrag von: FlorianN 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:

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.
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: chris12 am 31. October 2012, 16:10
man kann auch einfach bei virtualbox als start medium eine diskette auswählen und das image auswählen ...
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: FlorianN 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.
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: Jidder am 01. November 2012, 13:34
Ich vermute das liegt daran, dass das Image nicht 1,44 MB groß ist.
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: FlorianN 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ß?
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: micha 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 (http://www.lowlevel.eu/wiki/GRUB)
Die funktionieren dann auch in deinem emulator ;)
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: Jidder 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
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: chris12 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 ...
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: Svenska 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
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: tiger717 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.
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: micha 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.
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: FlorianN 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
Titel: Re: Trick: Eigenes OS als ISO
Beitrag von: kevin 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.