Entwickler-Ecke

Freeware Projekte - moOS - Mein kleines OS


Moritz M. - Sa 23.10.04 16:28
Titel: moOS - Mein kleines OS
Hi Leute,

ich hab mich die letzten Tage mal hingesetzt und aus Interesse ein kleines OS mit kleinem Loader und kleinem Kernel geschrieben. Es kann bis jetzt noch nicht mehr als den Kernel in den Speicher laden und ein paar Befehle ( unter "help" aufgelistet) . Ob und was ich weitermache weiß ich noch nicht, das kommt ganz drauf an ob ich Lust und Zeit habe.
Bis jetzt wird nur das englische Tastaturlayout unterstützt, da ich noch keinen Keyboardtreiber drinnen hab. Außerdem gibt es noch kein Memory Management und kein Dateisystem. Aber diese Sachen werden vielleicht in nächster Zeit in dieser Reihenfolge folgen.
Gecodet ist das Ding komplett in Assembler, der Writer (write_os.exe) in Delphi.
Das ganze geht ganz einfach:
1) Zip-Datei downloaden [http://www.gaehnen.net/moOS.zip]
2) Extrahieren
3) Eine Floppy reinlegen, auf der keine wichtigen Daten sind ( Da die Partionstabelle zerschossen wird sollte ihr die Daten im Zweifelsfall sichern )
4) write.exe ausführen
5) Von der Floppy booten.

Download: http://www.gaehnen.net/moOS.zip [http://www.gaehnen.net/moOS.zip] ( 9 KB )

Als nächstes würde ich gerne einfach ein paar einfache Befehle in den Kernel einbauen, habt ihr da irgendwelche Ideen für mich?

Ich freue mich über Testberichte!

Gruß, Moritz

P.S.: Eurer Festplatte kann absolut nichts passieren, moOS greift nicht darauf zu. moOS macht nicht mehr als den Kernel von der Floppy in dem RAM zu laden.

DP-Crosspost [http://www.delphipraxis.net/topic37560,0,asc,0.html]


raziel - Sa 23.10.04 17:05

Hi,

ich würde es sehr gerne in Bochs ausprobieren, aber Bochs mag moOS nicht... :(
Kann es sein, dass Du den Bootloader-Code "$55AA"am Ende des Bootloaders vergessen hast,denn Bochs serviert mir eine Meldung, es wäre "no bootable disk" und die loader.boot ist kleiner als 512Byte.

raziel


GTA-Place - Sa 23.10.04 17:08

So ich werds jetzt auch mal ausprobieren.
*Gespannt sei*

EDIT: Es funktioniert! Wenn jetzt noch mehr Commands kommen, Super!


Moritz M. - So 24.10.04 11:48

raziel hat folgendes geschrieben:
Hi,

ich würde es sehr gerne in Bochs ausprobieren, aber Bochs mag moOS nicht... :(
Kann es sein, dass Du den Bootloader-Code "$55AA"am Ende des Bootloaders vergessen hast,denn Bochs serviert mir eine Meldung, es wäre "no bootable disk" und die loader.boot ist kleiner als 512Byte.

raziel


:?!?: Ein Bootloader muss doch keine 512 Byte haben, oder? Der Rest wird von meinem write_os.exe mit 0-Bytes gefüllt. Welchem Befehl entspricht das $55AA denn bzw für was braucht man das?

@GTA-Place: Danke :) Befehle werden folgen

Gruß, Moritz


raziel - So 24.10.04 12:21

http://www.osdever.net/tutorials/hello_btldr.php?the_id=85
Der Bootsektor einer Diskette (der erste Sektor = die ersten 512 Byte) müssen eigentlich genau 512 Byte lang sein und an 511. Stelle müsste eigentlich $55 und an 512. Stelle eigentlich $AA stehen. Das ist quasi die Signatur für den Bootsektor, damit das BIOS weiß, "aha, das ist ein Bootsektor, das muss ich jetzt an 0x7C00 laden und ip drauf zeigen lassen". In etwa so wie "MZ" bzw "NZ" für ältere und "PE\0\0" für neuere Exe-Dateien als Signatur die ersten Zeichen einer Ausführbaren Datei unter Windows beschreiben. Es kann allerdings auch sein, dass neuere BIOS nicht auf diese Signatur schauen, Bochs aber wohl doch.
In NASM kannst Du das erledigen, indem Du ans Ende des Codes schreibst:

Quelltext
1:
2:
times 510-($-$$) db 0
dw 0xAA55


raziel


Christian S. - So 24.10.04 12:53

Hallo!

Könntest Du ein bootfähiges Image einer solchen Diskette bereitstellen? Ich habe leider kein Diskettenlaufwerk mehr.

MfG
Christian


patrick - So 24.10.04 16:47

ich würds auch gerne testen, aber leider hab ich ebenfalls keine diskettenlaufwerk mehr


Moritz M. - So 24.10.04 16:51

Hallo,

so, eine neue Version oben. Neuerungen:
1) write_os.exe: Wenn man als ersten Parameter einen Dateinamen übergibt, wird das Image dorthin geschrieben.
2) Ein fertiges Image liegt bei
3) Mit create_image.bat kann ein neues Image erzeugt werden
4) $55 und $AA werden in den Bootsektor der Diskette geschrieben, was das booten mich Bochs und alten BIOS-Versionen möglich macht

Download: http://www.gaehnen.net/moOS.zip (11KB)

Gruß


Christian S. - So 24.10.04 17:00

*grummel* VirtualPC nimmt nur Images, die 720KB oder 1,44MB haben. :bawling:


Moritz M. - So 24.10.04 17:37

Neue Version oben ^^


raziel - So 24.10.04 17:50

Jetzt funktionierts! Nicht schlecht fürn Anfang ;)

Christian S. hat folgendes geschrieben:
*grummel* VirtualPC nimmt nur Images, die 720KB oder 1,44MB haben. :bawling:

Dann nimm halt Bochs [http://bochs.sf.net] [Direktlink zum Download der Win32-Bins [http://prdownloads.sourceforge.net/bochs/bochs-2.1.1.win32-bin.zip?download]] Wennst willst schick ich dir auch meine bochsrc.txt (config) ;)


raziel


tommie-lie - So 24.10.04 18:12

Christian S. hat folgendes geschrieben:
*grummel* VirtualPC nimmt nur Images, die 720KB oder 1,44MB haben. :bawling:
Dann schnapp dir $Hexeditor (oder $Delphikenntnisse falls vorhanden :mrgreen:) und kopier das Image an den Anfang einer 1,44MB großen Datei, den Rest füllst du mit Nullen auf.


Moritz M. - So 24.10.04 18:25

tommie-lie hat folgendes geschrieben:
Christian S. hat folgendes geschrieben:
*grummel* VirtualPC nimmt nur Images, die 720KB oder 1,44MB haben. :bawling:
Dann schnapp dir $Hexeditor (oder $Delphikenntnisse falls vorhanden :mrgreen:) und kopier das Image an den Anfang einer 1,44MB großen Datei, den Rest füllst du mit Nullen auf.


Das macht die neue Version von write_os.exe, wenn man ihr einen Parameter übergibt. Außerdem liegt ein 1,44MB großes Image bei ( Dank Komperssion auf 3KB geschrumpft ;) )


patrick - So 24.10.04 18:44

ich kann leider kein 1.4mb großes Image finden :cry:

//edit: kann mir auch jemand erklären wie ich das auf cd brennen muss damit das läuft?


Moritz M. - So 24.10.04 20:32

Hoops....hab aus versehen das alte ZIP-File hochgeladen. Jetzt ist eines dabei.
Wie man es auf CD Brennt hab ich keine Ahnung :-|


Moritz M. - Do 28.10.04 17:15

So, der Source ist oben: http://cvs.sourceforge.net/viewcvs.py/moos/sf/old


GTA-Place - Sa 04.08.07 17:35

Falls sich jemand dafür interessiert, hab grad mal nach nem aktuellen Link gesucht:
http://moos.cvs.sourceforge.net/moos/moOS/old/src/


EDIT: ...und das Archiv rekonstruiert.


stigge - Di 07.08.07 20:00

Weiß jemand, wie ich das Image auf CD brennen kann und bootfähig mache?
Da mein PC kein Diskettenlaufwerk mehr hat muss ich eine CD nehmen aber beim Starten startet immer der Bootmanager von Linux! Im BIOS ist das CD-Laufwerk auch als erstes Bootlaufwerk eingetragen.
Die write_os.exe will auch nicht, auch nicht bei einer Parameterangabe.

Weiß jemand weiter? (Bochs will ich nur deshalb auch nicht installieren :wink: )


arj - Mi 08.08.07 09:17

Hol dir lieber Bochs oder Qemu. Muss man beides nicht installieren.

Sooo viel kann man in diesem Betriebssystem dann auch wieder nicht machen,
dass sich das brennen auf CD lohnen würde.

@Moritz: Cool :) bin auch an sowas dran.