Eigenes Betriebssystem erstellen

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von ichduersie.

    Eigenes Betriebssystem erstellen

    Es würde mich mal interessieren wie man sich sein eigenes Betriebssystem baut.
    Wär nett wenn ihr mir mal so n paar nützliche links schicken würdet.
    ;) instructables.com/id/Create-yo…operating-system/?lang=de
    aber ein wirklich gutes musst du wohl in Assembler schreiben.
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    dass ich bootloader und kernel später dann auch brauche (hätte ich vllt. mal erwähnen sollen) weiß ich schon.
    Mir geht es auch eigentlich auch erstmal nicht wirklich darum, etwas großes machen zu können erstmal will ich mir nen Text anzeigen lassen.
    Geh auf Lowlevel.eu, das ist das "führende" deutsche Forum/Wiki fürs OS erstellen.. Aber das daueert! Ich empfehle dir erstmal zu verstehen was die Real Mode, Protected Mode, Long Mode etc. sind! Das ist nämlich einer der wichtigsten Bestandteile!

    LG & viel Glück :)

    Andy schrieb:

    Bootloader ist das erste was du machen solltest.
    NEIN! Bloß nicht! Auf gar keine Fall. GRUB ist für den Anfang viel besser als das, was man sich selbst schreiben würde.

    lowlevel.eu/wiki/OS-Dev_für_Einsteiger
    Mit freundlichen Grüßen,
    Thunderbolt
    4typen ;) habe ich indirekt ja schon vorgeschlagen .

    BlackNetworkBit schrieb:

    ;) instructables.com/id/Create-yo…operating-system/?lang=de
    aber ein wirklich gutes musst du wohl in Assembler schreiben.


    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    BlackNetworkBit schrieb:

    aber ein wirklich gutes musst du wohl in Assembler schreiben.
    Nö. C ist völlig ausreichend. Ich habe vor einiger Zeit auch mal mit C++ getestet, das geht auch am Anfang (bis aufs instanziieren) ganz gut. Dynamisch Objekte erstellen kann man aber erst, wenn ein Speichermamager vorhanden ist.
    Mit freundlichen Grüßen,
    Thunderbolt
    Frag doch mal @SplittyDev, der schreibt gerne mit C und Assembler kleinere Betriebssysteme.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Joa wie @Thunderbolt schon geschrieben hat ist lowlevel.eu ne ordentliche Website, auf der das ganz gut auf deutsch erklärt wird.
    Man sollte aber auf jeden Fall auch osdev.org und osdever erwähnen, das sind beides sehr hilfreiche Websites mit vielen Informationen, aber auf englisch.

    In welchen Sprachen kann man ein OS schreiben?
    Theoretisch lässt sich ein Betriebssystem in vielen Sprachen schreiben, das geht z.B. mit BASIC (dem alten, nicht VB!), C, C++, D, Go und vielen weiteren Sprachen.
    Den Stub muss man dabei in Assembler schreiben, das is aber wirklich nicht schwer.

    Assembler ist aber nicht gleich Assembler.
    Du wirst vermutlich dein OS in x86 Assembler schreiben wollen, welche Syntax du da benutzt
    hängt dann nochmal vom Compiler ab. NASM, FASM, GCC, jeder Assembler hat ne eigene Syntax.
    Ich habe meinen Stub mit GCC kompiliert und den GAS (GNU AS) Assembler verwendet, habe also AT&T Syntax verwendet.

    Obwohl ich oben schon ein paar Sprachen aufgelistet habe mit denen man ein OS schreiben könnte,
    ist das trotzdem mit vielen Sprachen garnicht so einfach.

    Du kannst z.B. ein OS in C++ schreiben, du könntest also theoretisch Klassen und OOP verwenden.
    Da dein OS aber kein Memory Management hat, könntest du keine konstruktoren oder destruktoren verwenden, Klassen fallen also erstmal fast komplett weg.

    Eine beliebte Kombination ist es, die basics (GDT, IDT, Paging etc) in C zu schreiben und den rest dann in C++ zu schreiben,
    wenn man schon eine solide Basis hat und Konstruktoren und Destruktoren sicher aufrufen kann.
    Zu diesem Zeitpunkt sollte man dann auch schon eine Stdlib haben (z.B. Newlib).

    Sollte ich ein OS schreiben?
    Für viele ist es sicher ein Traum, irgendwann mal Programme für sein eigenes Betriebssystem schreiben zu können.
    Man sollte sich jedoch im Klaren sein, dass es unter Umständen JAHRE dauern kann, bis man seinen Kernel soweit hat.

    Ein OS zu schreiben erfordert sehr viel Geduld.
    Du wirst viele Stunden lang auf deinen Code starren und dich fragen was du falsch gemacht hast,
    und du wirst viele Stunden lang auf sehr technische Websites starren, und versuchen sie zu verstehen.

    Was brauche ich, um ein OS zu schreiben?
    Was du unbedingst brauchst:
    Einen Compiler, einen Assembler und einen Linker.

    Falls du GCC verwenden willst, hast du alles auf einmal:
    GCC als Compiler, AS als Assembler und LD als Linker.

    Vermutlich willst du dein OS auf Windows schreiben,
    dann solltest du aber wissen, dass vieles nicht so funktionieren wird wie du willst und das aufsetzen des Compilers um einiges schwerer ist als unter Linux.
    Ich persönlich nutze Linux, um mein OS zu schreiben.

    Wie fange ich an?
    Als erstes brauchst du einen Cross-Compiler für dein OS.
    Der Cross-Compiler erstellt binaries die auf deinem neuen System laufen.
    Das ist ziemlich wichtig, denn ein normaler Compiler wird binaries für das Betriebssystem generieren, für das er erstellt wurde,
    also vermutlich Windows, Linux oder Mac OSX.

    Einen Cross-Compiler aufzusetzen dauert ca. eine Stunde wenn man noch nicht viel Erfahrung damit hat.
    Das gute ist, dass du das nur einmal machen musst, danach kannst du sofort mit deinem OS anfangen.

    Gute Informationen zum bauen eines Cross-Compilers (für Windows, Linux und Mac OSX) findest du z.B hier:
    lowlevel.eu/wiki/Cross-Compiler
    wiki.osdev.org/GCC_Cross-Compiler

    Ich empfehle aber definitiv das osdev.org tutorial.

    Du musst dir auch überlegen, wie du dein OS booten willst.
    Die meisten Entwickler nehmen GRUB als Bootloader. Das hat verschiedene Vorteile:
    GRUB ist freie Software, lässt sich leicht einrichten, kann direkt Grafik (z.B. VESA) für das OS initialisieren und sogar Module für das OS laden.

    Die Alternative wäre, einen weniger bekannten Bootloader zu nutzen oder einen eigenen zu schreiben.
    Für das schreiben eines eigenen Bootloaders sollte man aber SEHR GUTE Assembler Kenntnisse haben und sich auch sehr gut mit Hardware und dem BIOS bzw. UEFI auskennen.
    Das ist ein ganzes Kapitel für sich und definitiv nichts für Anfänger.

    Zum Abschluss empfehle ich dir Bran's Kernel Tutorial:
    osdever.net/bkerndev/Docs/title.htm

    Das ist zwar auf englisch, sollte dir aber helfen, dich schnell in C zurechtzufinden.
    Bitte nichts Copy&Pasten, dabei lernst du nichts.

    Zu den einzelnen Komponenten des OS findest du auf Lowlevel oder OsDev viele Tutorials, denen du folgen kannst.

    Kannst dir ja auch mal meinen Kernel ansehen, wenn du willst.
    Ich sehe das mal jetzt nicht als Eigenwerbung, wird ja niemals verkauft und ist Open Source :D
    github.com/SplittyDev/Tesseract

    Grüße, SplittyDev

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

    Also wenn ich mir die ganze Sache mal anschaue ist das glaub ich noch einige Nummern zu groß für mich. Ihr könnt gerne weiter Beiträge posten (würde mich sogar freuen)

    VB.NET-Quellcode

    1. If mirkommtwasleichvor Then
    2. ich.probier's
    3. Else
    4. ich.lassediefingerdavon()
    5. End If


    Trotzdem danke für die Mühe
    Gibts was cooles kleines zu ;) : github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
    (ist zwar noch nicht ganz vollständig, aber ganz cool gemacht)

    Weiterhin gibt es da auch noch was über den Linux-Kernel: github.com/0xAX/linux-insides
    (find ich persönlich genial gemacht, bin selbst die Book-Version am lesen)
    Software being "Done" is like lawn being "Mowed". (Jim Benson)
    Mal wieder die ganze Qualität von YT-Tutoruials...
    Kein Ton, keine Erklärung (vielleicht in der Beschreibung, hab nicht nachgesehen), nicht mal anständiges Deutsch (wir tuen... wo wir die Dateien hin tuen...)...

    Du willst ein OS bauen, dann geh dem nach, was dir genannt wurde. Wenn schon für Hochsprachenprogrammierung das meiste auf YT Ranz ist, dann ist es in solchen Bereichen bestimmt nicht anders. Zudem lernste ja nix bei, is ja nur copy & paste, wenn es funktionieren würde.

    felipe12305 schrieb:

    erzeugt Fehler
    Nö. Das wird nur nicht geladen. Die CPU führt dann Zeugs aus, das zufällig an dieser Stelle im RAM steht. Debug this (für Anfänger im OS-Dev-Bereich sicherlich schwierig).

    Ach, außerdem ist der Code des utube-Videos geklaut: tutorials.de/resources/ein-eig…leines-betriebssystem.84/
    Mit freundlichen Grüßen,
    Thunderbolt