Betriebssystem erstellen/erweitern (mit Linux?)

  • C#

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Mandy.

    Betriebssystem erstellen/erweitern (mit Linux?)

    Hi Leute!

    War schon lang nicht mehr online, aber jetzt hab ich mal wieder ne Frage!
    Mich würd es interessieren, wie ich eine Betriebssystem programmiere. Also ich hab von Freunden schon gehört, dass man da mit Linux das machen könnte, also Linux weiter zu programmieren. Nur aber wie?
    Ich hab gegooglet, aber nix gefunden. Kennt/hat jmd tutorials, die er mir weiter empfehlen kann?
    Ziel von dem System wäre winfach nur, dass man nur bestimmte Programme hat, und sich mit seinem Account einloggt, den man wiederum für (angenommen) die website auch verwenden kann.

    Falls jmd Fragen hat, fragt! :D
    Du scheinst keine Ahnung zu haben, was ein Betriebssystem ist.
    de.wikipedia.org/wiki/Betriebssystem

    Mit Linux "macht" man kein Betriebssystem, Linux ist eins !
    Ein betriebssystem kann auch nur nativ programmiert werden, also ist C# nicht möglich.

    Übrigens: Tipps für eine höhere Antwort-Quote

    edit: Ursprünglicher Wortlaut wieder hergestellt
    Ich bitte darum solche Zensurmaßnamen zu unterlassen, wenn es mal wieder nicht genehm ist, daß ich Klartext schreibe, dann lösche den Beitrag (schlimm genug), aber pfusche nicht an meine Formulierung rum ! :cursing:
    Wird ja immer schlimmer hier ! Dafür gab es eine Verwarnung. ~Thunderbolt
    Formulierung entschärft. ~Thunderbolt

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Thunderbolt“ ()

    Um ein Betriebssystem zu schreiben, braucht es als allererstes Assembler-Kenntnisse der gehobenen Art. Unter 5 Jahren Praxis in 80x86 würde ich das gar nicht erst versuchen. Wenn die Basics dann funktionieren, kommt C++ dazu. Da würde ich auch 5 Jahre Praxis veranschlagen.

    Als Alleinkämpfer bist du dann so etwa 3 Jahre mit Programmieren beschäftigt, bis das erste Mal mit "deinem" OS der ASCII-Boot-Bildschirm erscheint. Denn bis dahin brauchst du einen Realmode-Bootloader, einen Protected-Mode-Kernel (all das zwangsweise in ASM), jede Menge Device-Treiber für Festplattencontroller, PCI-Brücken, USB-Roothubs, und so weiter und so fort. Das meiste davon muß in ASM programmiert werden (Performancegründe), geht aber auch in C++. Wie dir aufgefallen ist, ist da von Grafik noch keine Rede und C# hat auch keiner erwähnt - das geht erst, wenn das OS rund läuft und du .NET auf dein OS portiert hast.

    Wenn dir das alles überhaupt nix sagt: Laß es.
    Moin,

    wollte nur hinzufügen, dass Assembler mittlerweile gar keine so große Rolle mehr spielt, denn es gibt ja auch noch C und Pascal.
    In allen anderen Punkten stimme ich jedoch meinem Vorredner zu. Wenn Du nicht gerade ein paar tausend Kumpels hast, die alle perfekt damit arbeiten können und sich in dem Bereich auskennen, dann wird das nichts. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Er möchte doch gar kein eigenes Betriebssystem schreiben sondern er gedenkt

    wsk1000 schrieb:

    Linux weiter zu programmieren.

    Die Quellen von Linux gibt's hier.
    Da kannst du nach Belieben modifizieren und Module dazu entwickeln.

    Es gibt anscheinend sogar Visual-Studio-Projekte für solche Modifikationen: sysprogs.com/VisualKernel/tutorials/kernel/

    Nur eines solltest du wissen:
    Betriebssystementwicklung ist die Champions-League der Programmierung.
    Bevor du nicht irgendwo in der ersten Liga spielst, wirst du keine Chance haben, dort Fuß zu fassen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @petaod
    Danke! Ja genau, dass will ich. Ich weiß dass Linux ein Betriebssystem ist, und ich wollte kein komplett neues aufsetzten. :huh:
    Und ich bin jz nicht unbedingt Anfänger, hab ein paar Jahre schon alles mögliche probiert. Aber ich hab auch jetzt nicht die Zeit mich drei, vier Stunden vorm Computer zu hocken, und herum zu probieren. Aber ich werde mir mal die Links genauer durchlesen. :)

    Lg

    timonator schrieb:

    Mit Linux "macht" man kein Betriebssystem, Linux ist eins !
    Nöp. Linux an sich ist ein Kernel. Eine Linux-Distribution ist ein Betriebssystem.

    OlafSt schrieb:

    Als Alleinkämpfer bist du dann so etwa 3 Jahre mit Programmieren beschäftigt, bis das erste Mal mit "deinem" OS der ASCII-Boot-Bildschirm erscheint.
    Drei Jahre ist etwas zu pessimistisch. Wenn man GRUB nimmt, kann man schon in der ersten Stunde der Entwicklung Text aus dem Protected-Mode-Kernel anzeigen. Das ist aber auch nicht schwer. Die "richtige" Programmierung geht bei Speichermanager, Treiberinterfaces, HAL, Prozess- und Taskverwaltung und Scheduling los. Wenn man den Bootloader selbst schreiben möchte, ist man aber erst mal einige Wochen damit beschäftigt.

    OlafSt schrieb:

    Assembler-Kenntnisse [...] 5 Jahren Praxis
    Eher weniger. An Assembler braucht man zwar einiges, aber SO komplex ist das meist nicht.

    OlafSt schrieb:

    C++
    ist in der Betriebssystementwicklung hinderlich. Bevor man dazu kommt, Instanzen zu erstellen, braucht es erst mal einen Speichermanager. Ich kenne auch keinen Kernel, der mit C++ entwickelt wurde. Fast alle Kernel sind in C geschrieben, der Rest sind "alte" Handy-Betriebssysteme, die meist in Java geschrieben wurden.

    wsk1000 schrieb:

    wie ich eine Betriebssystem programmiere
    Willst du wirklich ein Betriebssystem entwickeln, oder vielmehr eine grafische Oberfläche? Ist dir klar, was ein Betriebssystem macht? Du wirst Treiber für störrische Hardware entwickeln, dich mit unerklärlichen Fehlern rumschlagen, wochenlang vor dem PC sitzen und dir Haare ausreißen.
    Eine grafische Oberfläche ist ein interessantes Thema - aber eine völlig andere Baustelle.
    Mit freundlichen Grüßen,
    Thunderbolt
    @Thunderbolt

    wsk1000 schrieb:

    ich wollte kein komplett neues aufsetzten.


    @wsk1000

    wsk1000 schrieb:

    Aber ich hab auch jetzt nicht die Zeit mich drei, vier Stunden vorm Computer zu hocken, und herum zu probieren.
    wer auf Betriebsystemebene programmiert, sollte nicht 3-4 Stunden lang herumprobieren... der sollte eigentlich so gut wie alles auf dem Kasten haben, was die Programmierung hergibt, sonst wäre der für die nächsten 3 Jahre nur mit herumprobieren beschäftigt.

    Thunderbolt schrieb:

    C++ ist in der Betriebssystementwicklung hinderlich.

    Jou. Viele Leute kennen den Unterschied zwischen C und C++ garnicht, es war wahrscheinlich C gemeint. Wenn man mit VS arbeitet, kann man auch ganz fein auf InlineAssembler zurückgreifen.
    War es nicht. Ich habe übrigens miterlebt, wie C++ entstand, daher kenne ich den Unterschied durchaus.

    Und selbstverständlich kann man mit C++ Betriebssysteme schreiben. C++ ist ein Superset von C, eigentlich mal als OOP-Erweiterung zu C gedacht, hat aber ein Eigenleben entwickelt und C nun fast komplet abgelöst. Ergo kann C++ alles, was C auch kann.
    Ich frage mich wie man ein generisch-objektorientiertes OS schreibt. Das wäre nämlich C++ Design. Es wird in C enden, allein die C++ CRT Funktionen wie Operator new+2 Überladungen und Operator delete+2 Ü. , new[], delete[] müssen selbst implementiert werden. Ein virtueller Funktionshandler muss implementiert werden, man muss etliche Sections in der PE umscheppern für static Data etc. Die ganze Standardbibliothek müsste selbst implementiert werden.

    wsk1000 schrieb:

    grafische Oberfläche


    Du meinst ne Desktop Environment like GNOME oder LXDE? Mit C++ ist das am einfachsten, denn Qt bietet ein Wayland-Modul welches es erlaubt ein eigenes Desktop Shell zu erstellen/aufzusetzen. Als Beispiel nehme ich jetzt mal die Shell von Papyros, ist ne Linux-Distribution mit einer eigenen Shell die ans Material Design angelehnt ist: github.com/papyros/papyros-shell

    Wenn es jemanden interessiert so sieht es dann ungefähr aus:

    raw.githubusercontent.com/papy…esktop_shell/layout_1.png

    *Derart große Bilder bitte nicht einbetten*
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Gonger96 schrieb:

    Es wird in C enden, allein die C++ CRT Funktionen wie Operator new+2 Überladungen und Operator delete+2 Ü. , new[], delete[] müssen selbst implementiert werden. Ein virtueller Funktionshandler muss implementiert werden, man muss etliche Sections in der PE umscheppern für static Data etc. Die ganze Standardbibliothek müsste selbst implementiert werden.


    Aber das sind alles Aufgaben der RTL des Compilers. Nicht des Betriebssystems, ergo muß das auch gar nicht implementiert werden ;)
    @OlafSt Der Compiler geht davon aus, dass schon Dinge wie Speichermanager da sind. Deswegen scheint das Programm in Ordnung und kompiliert. Beim Ausführen gibt es dann im besten Fall den Triple Fault, im schlechtesten Fall läuft das Programm weiter und führt Zeug aus, das da zufällig gerade im RAM steht. Die RTL müsste selbst implementiert werden, was ohne Kernel als "Systemverwalter" nicht funktioniert. Also doch lieber C.
    Mit freundlichen Grüßen,
    Thunderbolt
    Es ist kein Problem das ganze in Cpp zu machen, nur darfst du dann mit Cpp zu Begin erstmal C Code schreiben, was dann somit auf C rausläuft und kannst halt Klassen erst verwenden, wenn du die Speicherverwaltung bereits geschrieben hast. Trotzdem läuft dann der Cpp Kompiler(und es kann auch ein und dieselbe Assembly sein).
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    OlafSt schrieb:

    Aber das sind alles Aufgaben der RTL des Compilers

    Falsch, das müsste alles implementiert werden, habs ja selber schon machen müssen. Unter Windows führt new z.B. malloc aus, das auf einem eigenem OS natürlich nicht vorhanden ist. Abgesehen davon geht das ziemlich ins OT, da das den TE absolut nicht interressiert.

    KidRick schrieb:

    Du meinst ne Desktop Environment like GNOME oder LXDE? Mit C++ ist das am einfachsten, denn Qt bietet ein Wayland-Modul welches es erlaubt ein eigenes Desktop Shell zu erstellen/aufzusetzen. Als Beispiel nehme ich jetzt mal die Shell von Papyros, ist ne Linux-Distribution mit einer eigenen Shell die ans Material Design angelehnt ist:


    ja, genau! Sowas will ich eigentlich machen.