Unabhängiges eigenes Betriebssystem programmieren

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von BiedermannS.

    Unabhängiges eigenes Betriebssystem programmieren

    Einen schönen, verregneten Abend - VB-Paradise. :)

    Seit einigen Tagen treibt mich der Gedanke an, ein eigenes Betriebssystem zu programmieren.
    Es soll nichts großes werden, nur simpelste Grundlagen beherrschen (zB... mh... dass es überhaupt läuft wäre schonmal nett :D).
    Erfahrungen darin habe ich nicht, aber bei dem was ich bisher so im Internet an verwertbaren Informationen gefunden habe, muss ich dafür wohl mit einem Assembler umgehen können, um wirklich etwas halbwegs annehmbares auf die Beine stellen zu können.
    Gut - zweites Problem, ich habe nämlich auch von Assemblern keine Ahnung (wenn es da was zu beschönigen gäbe würde ich das gerne machen, aber ich hab da wirklich keine Erfahrung mit).

    Mir geht es vorallem darum, dass es ein freies und unabhängiges Betriebssystem ist. Es soll nicht auf Microsoft oder irgend etwas anderem basieren.
    Soweit ich das mitbekommen habe, gibt es verschiedene Assembler (bspw. welche von Microsoft oÄ).
    Ist es 1. möglich damit auch ganze Betriebssysteme zu programmieren, und wenn ja, heißt das dann 2. nicht auch dass dieses System dann quasi auf Microsoft aufbaut?
    Ich entschuldige mich schonmal im Voraus dafür, falls ich hiermit idiotische Fragen stelle - aber jedwede Korrektur oder Belehrung nehme ich gerne an.

    Oder ist es auch möglich, mit einer höheren Programmiersprache selbstständige Betriebssysteme zu machen? (Schließlich wandeln Programmiersprachen eh nur verständlichen Text in Assembler-Sprache um...)
    Ich möchte nicht sofort loslegen, und tun und machen - vorallem möchte ich ersteinmal die Grundlagen lernen (Assembler etc), und dann schauen wie ich weitermachen kann.

    Hättet ihr selber Ratschläge oder Instruktionen für mich? Irgendwelche Tipps?
    Im Netz habe ich bisher keine brauchbaren Tutorials gefunden.
    Vorallem drängt mich die ganze Zeit die Frage, ob und wie ein Betriebssystem unabhängig ist, wenn man es programmiert.

    Danke fürs Lesen :)

    MfG
    LevelXProject
    Als Assembler hab ich mich bisher mit zwein begnügt. Einmal NASM und das andere mal mit dem GAS, ich bevorzuge den GAS, da ich 1. auf Linux entwickel und 2. auch GCC für C verwende.
    Und nein, da das ganze nur der Assembler ist, baut es nicht direkt auf diesem auf.

    Selbstverständlich werden Betriebssystem nicht rein in Assembler geschrieben, natürlich mit Ausnahmen: menuetos.net/
    Du kannst auch C oder gar C++ verwenden, bzw. so ziemlich jede Sprache, die den Code auch in Maschinencode umwandelt und keine Laufzeitbibliotheken benötigt. Zu empfehlen wäre natürlich erstmal C.
    Aber auch wenn du eine solche Hochsprache verwendest, wirst du um Assembler nicht drumherum kommen und wenn du Inline-Assembly schreibst(was aber auf dasselbe rauskommt). Erst wenn dein Betriebssystem einen gewissen Grad erreicht hat, kannst du alles rein in C/C++ entwickeln. Aber dass du jemals soweit kommst ist fraglich, da das ganze sehr aufwendig ist.

    Aber trotzdem hier mal eine Seite: lowlevel.eu/wiki/Hauptseite sogar auf Deutsch...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Guten Abend,

    wie sich die Prioritäten ändern - klasse!
    Zu meiner Zeit hackten wir auf dem C64 rum und da war es toll, mit dem Macro-Assembler 16, 32, oder mehr Sprites, oder/und bunte, wirbelnde Linien in den NMI zu packen und dabei noch den SID zu füttern.

    Heute müssen Betriebssysteme ohne Vorkenntnisse sein :thumbup: ..

    Nicht ernst nehmen, LG,
    Bruno
    Allem gesagten kann ich nur beipflichten, du wirst nie an den Punkt kommen eine Oberfläche zu haben geschweige denn richtige Commandozeilen so wie DOS hin zu bekommen.

    Wenn du Assembler und/oder C lernen willst, dann beschäftige dich mit Mikrocontrollern, die sind weitaus einfacherer zu Programmieren und erfordert trotzdem erhebliche Einarbeitungszeit. Aber dort kann man zumindest einigermaßen nachvollziehen was passiert, wie du einzelne Pins ansteuerst usw.
    Zustimm. Ein einzelner Progger ist zigfach überfordert, selbst wenner jahrelangen Vollzeit-Einsatz investiert.
    google mal nach ReactOS. Das ist ein OpenSource-Projekt, die sich ein OS vorgenommen haben. Kannst dich entweder davon abschrecken lassen.
    Oder Theoretisch könnteste dort vlt. sogar iwie einsteigen, aber soweit ich weiß, sind da ziemliche OberCracks am werkeln.
    Danke jvbsl, ich werde mich da mal umschauen :)

    No problem, ich nehm das nicht ernst :D
    Aber eben die Vorkenntnisse sind es ja, die ich erwerben möchte.

    Mh... danke für die drei netten Tipps :3
    Es soll ja auch nicht für die Allgemeinheit sein, sondern für mich selbst. Ich will kein zweiter Steve Jobs werden oÄ.
    Mir geht es nicht darum ein vollfunktionsfähiges Betriebssystem aus dem Boden zu stampfen, sondern nur die aller simpelsten Grundlagen damit zu schaffen.

    @Dodo
    Dauert es wirklich so lange bis man es hinbekommt eine sichtbare Oberfläche zu haben?
    In C will ich mich auf jeden Fall nochmal fortbilden :)

    @ErfinderDesRades
    Mh... davon ein Obercrack zu sein bin ich ungefähr so weit entfernt wie die Erde von Proxima Centauri - ist also eher unwahrscheinlich dass die mich da mitmachen lassen würden :D

    Mfg
    LevelXProject
    Zum Vergleich: Ich arbeite mittlerweile seit 3 Jahren recht aktiv an tbOS, und kann dir sagen: Ich komme mittlerweile in ein Prompt, und kann solangsam auf die Vesa Modi schalten... Aber von einer grafischen Oberfläche zu träumen ist gerade komplett fehl am Platze.

    Wenn du das machen willst, nimm dir ein DOS, und bastel da ne QBasic Oberfläche drauf ;)

    Ich möchte dich hier aber von nichts abhalten. Das Entwickeln eines eigenen Kernels macht (mir zumindest =D ) viel Spaß, und ich kann es nur empfehlen, wenn man wissen möchte, wie ein Rechner wirklich im Inneren arbeitet.
    Assemblercode kann man eig. komplett vermeiden. Der einzige Maschinencodeteil in meinem System ist der Kernalloader, der dann den C-Einsprungspunkt aufruft...

    Gruß,
    Manawyrm

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Manawyrm“ ()

    Grundlegend brauchst du mehrere Dinge um ein Betriebssystem (im folgenden OS) zu programmieren.

    Ganz grob benötigst du einen Bootloader und dein OS.

    Zum Bootloader:
    Der Bootloader wird grundsätzlich in Assembler geschrieben (Ausser kannst in Maschienensprache programmieren) und bereitet die Hardware sowie das System zum Starten vor. Der Bootloader lädt alle wichtigen Teile des OS und startet dieses.

    Ab hier bin ich mir nicht mehr ganz sicher (ist auch schon wieder ein Jahr her als ich das gelesen habe)

    OS:
    Soweit ich weiß kann nach dem Bootloader schon in C/C++ gearbeitet werden um grundlegende Funktionen zu verwenden. Aber trotzdem wird Assembler noch benötigt um Low-Level funktionen wie Netzwerkgeräte sowie diverse Hardware anzusprechen, dazu müsstest du dir evtl. noch diverse (abgespeckte) Treiber schreiben, um auf diese zuzugreiffen.

    Bis zur GUI ist es aber dann dennoch ein weiter Weg, da du ja keine Fremdsoftware verwenden willst, musst du auch die ganzen Zeichenroutinen (grafische Bildschirmausgabe) sowie ein eigenes Dateisystem selber erstellen.


    Auch schön zum Testen und Üben ist BareMetalOS.
    Das ist ein Betriebssystem, welches komplett in Assembler geschrieben wurde. Sogar netzwerkfähig.

    Da kannst du dir sicher ein paar Dinge abschauen.


    Ansonsten kann ich dir nur empfehlen, fang mal mit Linux from Scratch an. Kompilier deinen ersten Linux Kernel. Versuche den SourceCode von Linux zu verstehen und gezielt zu ändern. Wenn du die ersten kleinen erfolgreichen Änderungen am Kernel gemacht hast, versuch dich an was größerem.
    Arbeite dich langsam vor und sieh zu dass du auch wirklich jeden Ablauf bis ins Detail verstehst.

    Wenn das Ändern der Systemfunktionen dann irgendwann mal reibungslos klappt, kannst du versuchen ein eigenes Filesystem in deinen Kernel zu integrieren. Hierfür kannst du dir bestehende Systeme ansehen (und verstehen) und anhand dessen dich vorarbeiten bis dein eigenes Filesystem steht.

    Danach gehts weiter indem du dich mit den Treibern beschäftigst. Hier musst du allerdings wissen, das die Treiber die für ein Gerät funktionieren, beim nächsten auf einmal versagen, obwohl vl nur ein Nachfolgemodell verwendet wird.

    Dann kannst du dich noch daran machen eine eigene GUI für deinen Kernel zu schreiben, vl angelehnt an Gnome.

    Und dann, nach Jahren des Eigenstudiums, wenn du zu hundert Prozent alles Verstanden hast, wie so ein System funktioniert, dann kannst du anfangen was eigenes zu Programmieren und ein eigenes System zu entwerfen.

    Allerdings ist die Erfolgsrate bei solchen Projekten (weniger wie 10 Personen, also falls sich dir keiner anschließt) eher gering, da sich der Aufwand auch nicht für die praktische Verwendung lohnt und die Dauer einfach viel zu lange ist.

    Ein besserer Weg währe, wie bereits gesagt, einen bestehenden Linux SourceCode so zu verändern dass er deinen Vorstellungen entspricht, da du so einen Teil der Kompatibilität zu anderen Linux-Systemen erhalten kannst, aber trotzdem all das ändern kannst, was dich an bestehenden Systemen stört.

    Ich will dich nicht davon abbringen, aber ich will dir hier mal aufzeigen was alles auf dich zukommt und das ist noch lange nicht alles. Denn diverse Themen wie Prozessmanagement, Ressourcenverwaltung, Berechtigungssysteme, Fehlerbehandlung, Multithreading (falls gewünscht) usw. habe ich noch nicht mal angesprochen....
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D
    Ich habe mal vor Jahren sowas versucht, im Anhang findest du ein damaliges Tutorial.

    Ist relativ easy solange du nicht in den Protectet Mode musst.
    Ich hatte damals sogar schon eine grafische Oberfläche über Vesa + eine eigene Schriftart, bei dem Maustreiber und Festplattentreiber habe ich als 1 Mann Armee
    kapituliert.

    Mann kann sich gar nicht vorstellen was es für Arbeit ist eine eigene Schriftart zu erstellen ohne Windows/dos etc..
    Im Anhang findet ihr auch eine Rubrik History->Api

    Ich kann mal zu hause schauen ob ich noch den source iwo finde.
    Wenn es fragen dazu gibt einfach mailen webmaster(at)noa-x.de

    Meine quellen von damals -> lowlevel.eu/wiki/Hauptseite
    Dateien
    • noa-x.zip

      (107,59 kB, 286 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „bytefresser“ ()

    Ich präsentiere mal die vielleicht weniger beliebte Variante, aber für vb'ler deutlich einfachere:

    Cosmos-Link
    Dort kannst du dir eine erweiterung für VB/VS runterladen, womit du unter CSharb bzw. unter VB (BETA) ein Betriebssystem schreiben kannst, wo du deutlich weniger Treiber-Sorgen hast, da dir alles per dll's mitgeliefert wird.
    Man kann es sich in etwa wie das .Net MicroFramework vorstellen.

    Debugging ist auch bequem, wenn man VMWare installiert hat.

    mfg

    gfc
    Ein-Mann-OSs sind - das nötige LowLevel-Knowhow vorausgesetzt - durchaus möglich:
    lulu423gina.lu.funpic.de/
    von Brueggi ( dosforum.de/viewtopic.php?f=15&t=6491 )
    Als grafische Oberfläche dient GOS/286 - samt Desktop, einer Art Browser, einem Textverareitungsprogramm, einem Sokoban-Klon, einem Pacman-Klon, einem BMP-Viewer und sogar einem Publishing-Programm.
    | Keine Fragen per PN oder Skype.
    ahh ein eigenes betriebssystem..
    ich erinnere mich noch gut daran, wo ich vor 5 monaten mein eigenes linux system mit dem geklauten .net von microsoft programmiert habe..
    ich habe millionen verdient!

    doch spaß bei seite,
    kleine info:
    An Microsoft Windows XP haben ca. 3000, wenn nich sogar mehr entwickler dran gesessen, das über mehrere jahre.

    du hast quasie drei möglichkeiten:
    a) Du Programmierst auf den Kern DOS
    b) Du Programmierst auf den Kern LINUX
    c) Du lässt es sein.

    es sitzen nicht umsonst tausende von entwickler an einem betriebssystem.
    ich finds immer wieder lustig, wie eine einzelne person versucht, zu sagen "ich will ein betriebssystem programmieren"

    Schnapp dir linux, programmier dafür Modifikationen, und pass das OS so an wie du es willst, alleine daran wirst du zu 99,99 % scheitern.
    ich empfehle dir @picoflop : Rat, lass es besser sein.

    ich meine, es gibt ernsthaft ein OS was auf .net ebene ist, aber das kann man denke ich mal in die tonne kloppen.
    lass es besser sein, nicht böse gemeint, aber es wird sicherlich kein einfacher weg für dich sein.
    C / C++ / Assembler solltest du dafür aus dem FF können


    gruß, annoxoli

    Annoxoli schrieb:

    ich meine, es gibt ernsthaft ein OS was auf .net ebene ist, aber das kann man denke ich mal in die tonne kloppen.

    research.microsoft.com/en-us/projects/singularity/

    Man erfährt von Microsoft Research aber auch nicht viel. Eingestellt? Fortschritt?

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Wenn man sich Singularity mal genauer ansieht, dann merkt man 2 Dinge:

    1. Es ist nicht einfach, da alles was du darin programmierst über Verträge geregelt sein muss. Dateizugriffe, Kommunikation zweier Programme, Networking usw.

    und 2. (Das wichtigere)

    Letzte veröffentlichte Version 2008

    Daran wird nur mehr Microsoft intern gearbeitet (und da weiß man nicht wie intensiv) und man darf das ganze nur zu Übungs- und Forschungszwecken benutzen...
    SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

    Weil einfach, einfach zu einfach ist! :D