Eigenes Betriebssystem programmieren?
Hi,
ich hab seit längerem daran Interesse ein kleines OS zu programmieren. Das soll zu Beginn erstmal nur ein MS-DOS Klon werden. Später, hab ich mir überlegt, soll sich über ein Befehl ein GUI öffnen wo das Datum und die Zeit angezeigt werden soll mit einem close Button.
Was benötige ich um so ein Projekt zu verwirklichen, und was muss ich dafür lernen?
Würde auch c++ anstatt nur c gehen? Ich kann bereits C# und Java somit währe der Umstiegt auf C++, glaub ich, einfacher.
Aber was ist wenn ich irgendwann komplexere Sachen hinzufügen will? Und was brauche ich noch außer C bzw C++?
Währe cool wenn ihr eventuell auch direkt nützliche Seiten oder ggf lernen Videos bzw Bücher mit verlinken könntet.
7 Antworten
Du wirst an ASM nicht vorbeikommen, da C/++ keien primitive für die Anteuerung von Hardware hat. Aber da Toolchains für C/++ in der Regel inline-ASM bewerkstelligen können, kannst Du tatsächlich sogar ein OS in C++ entwickeln.
Davon ab, gibt es mit FreeDOS ein quelloffenes DOS, auf dessen Basis man arbeiten könnte.
Wenn Du wirklich bei 0 anfangen möchtest, wird es ein wenig haarig werden, denn DU brauchst auch eien 16-Bit Toolchain - Und sei es für den Loader/MBR/Bootcode.
----------
Vor allem aber solltest Du für so ein Projekt intime Kenntnisse von Hardware, ISA und Co haben.
Übrigens hat auch MS den Originalquellcode von frühen MS-DOS Versionen veröffentlicht.
Wenn ich mich richtig erinnere, gibt es Free Dos und davon den Quellcode.
https://www.freedos.org/source/
Vielleicht erstmal hier hineinschauen.
Hallo,
das Anliegen ist sicher löblich, bei dem Mangel an Betriebssystemen, die nicht funktionieren.
Und genau da staune ich. Hier, in einem Allerweltsforum mit allen Themen die es gibt - eine solch spezielle Frage....
Da Du offenbar nichts davon verstehst lies mal diesen Beitrag:
https://de.wikipedia.org/wiki/Geschichte_von_Linux
Ich will Dich nicht abhalten aber darauf hinweisen, wenn es etwas umwerfend Neues sein soll, dann garantiert nicht mit Hilfe von GF, sondern mit
soliden Programmierkenntnissen!
Grüße aus Leipzig
Dein Link ist kaputt :)
Und die Frage kommt gar nicht so selten, vor drei Tagen hat jemand die exakt gleiche Frage gestellt, nur nicht so ausführlich.
Bei mir funktioniert der Link, kann man aber auch so finden in Wikipedia unter
Geschichte_von_Linux
Dass ich es kopieren und einfügen kann, weiß ich, dennoch erkennt Gutefrage.net es nicht als Link - das wollte ich damit ausdrücken
Wie entwickle ich ein Betriebssystem? (Computer, Technik, Programmieren) - gutefrage
Würde auch c++ anstatt nur c gehen? Ich kann bereits C# und Java somit währe der Umstiegt auf C++, glaub ich, einfacher.
Sorry, aber wer so eine Frage stellt, kann nicht sehr viel Erfahrung haben, also ist das Wort "können" bei C# und Java vermutlich um einiges zu hoch gegriffen ;)
Beide Sprachen sind weit weit komplexer, als nur Syntax und ein paar Grundlagen, C# noch ein gutes Stück mehr als Java. Wer wirklich behaupten kann, eine der beiden Sprachen zu "können", der hat deutlich mehr Erfahrung und kann allein deshalb etwas besser einschätzen, was es bedeutet, ein Betriebssystem zu entwickeln.
Und nein, der Umstieg auf C++ ist nicht einfach(er), nur weil Du C# oder Java "kannst". Die Syntax mag ähnlich sein - das war's dann aber auch. C++ ist sehr komplex und kompliziert und arbeitet auf allen Ebenen vollständig anders als C# oder Java.
Aber dennoch wirst Du für dein Vorhaben nicht um C und C++ herum kommen und höchstwahrscheinlich auch nicht um Assembler und sehr tiefgehende Hardware Kenntnisse.
Haben sie?
Hast Du eine Quelle dazu?