Betriebssystem


  • Mod

    irgendwer muss mir irgendwann mal erklären, warum jeder assembler anfänger (und andere auch) unbedingt ein os schreiben will (zumal beides nur bedingt miteinander zu tun hat). :p



  • Das liegt vieleicht daran dass die meisten glauben das os proggen sehr leicht ist. Vom programmtechnischen ist es ja wirklich nicht so schwer weils von jeder Teilbereich schon irgendwann implemtiert wurde unter der source frei herumliegt. und manchen denken sich halt sie nehmen von überall das beste und es wird super os.

    Aber die schwirigkeit am os proggen ist ein durchgehent design plan zu haben der absolut keine sicherheits und andere lücken (Wahrscheinlich ist es gar nicht möglich ein perfektes os zu schreiben) aber BSD hat es fast geschaft (zummindest ist das meine Meinung)



  • erwähnenswert ist noch http://lowlevel.brainsware.org

    asm rulez!!!



  • Lowlevel wurde schon genannt, Seite 2.
    Ein HelloWorld-OS wird auch in diesem Tutorial geschrieben. Es ist imho schön übersichtlich. Mehr als Text ausgeben, auf Taste warten und neustarten kann es aber nicht. Ich denke wenn man etwas Asm-Erfahrung hat, kann man schon ein kleines (natürlich textbasiertes) OS schreiben. Aber ich würde schon erstmal nur mit Assembler arbeiten. C-Programmierung zu ermöglichen ist doch ne Menge Arbeit. Und das wird man alleine (wenn man keinen Code klaut) auch nicht hinbekommen. Und sich ein OS zusammen zu klauen ist auch nicht das Wahre.



  • Wenn man keine C Standard-Library braucht, sollte es eigentlich kein Problem sein.

    Man kann u.U. manche Linker dazu bekommen, ein absolut addressiertes Executable (ggf. ohne OS dependencies) zu erzeugen.

    Andernfalls muss man einen Konverter fuer das executable-Format schreiben.

    Fuer ein eigenes kleines OS reicht es auch aus, einfach ein Programm an eine bestimmte Adresse zu relozieren und als Speicherdump in eine Datei zu schreiben. Dann kann man das Programm einfach einladen und aufrufen.

    Ich hab das Ganze frueher schonmal auf dem Amiga gemacht, und das war eigentlich ganz einfach.

    Und ich hab auch meinen normalen C Compiler dafuer genommen. 🙂



  • Hier ist mal ein Link zu einen Mini-OS. Die Sourcen sind ebenfalls auf der Seite.

    http://www.v2os.cx/



  • Also ich lad mir das nicht runter.
    Aus den einfachen Grund, ich habe keinerlei Eindrücke von der Optik des OS.
    Vielleicht solltest du mal als nächstes eine ScreenShot Funktion einbauen.



  • Meinst du mich jetzt?
    Von mir bekommste höchstens nen Screenshot als HEX zum abtippen....



  • Habe auch den wahnsinnigen entschluss gefasst ein OS zu Programmieren.
    es heisst dann auch passenderweise S-OS.

    Vom Späteren Funktionsumfang währe es noch relativ einfach gestrickt.
    Und soll mir auf Uralt sowie x86 kompatiblen embedded Rechnern als Arbeitsgrundlage für einfache Steuerungssaftware dienen.

    Dazu habe ich dann mal Tagelang rumgesucht was Google & Co zu bieten haben.

    Und habe mir dann ein Beispiel Als Startpunkt meiner Entwicklung ausgesucht

    Cottontail Bootloader v0.02b
    http://bos.asmhackers.net/docs/booting/fat12_boot/cbl-v0_02b.zip

    er ist etwas an Grub angelehnt
    und war der mit den meissten funktionen und der einzige der scheinbar auch FAT 16/32 unterstützt und nen sehr Rudimenteren Modulsupport bietet.

    Leider war das ganze für Turbo-C unter Windows aber auch mit NASM
    Ich habe Versucht das jetzt auf Linux anzupassen bisher hat er nicht gemeckert und habe am Assembler und Quellcode nichts geändert nur nen kleines Shellscript
    gebastelt habe aber keine Ahnung obs richtig ist.

    Ich habe mir da auch schon ein paar Gedanken macht

    Bootloader Stage1 existiert schon für FAT12/16/32 und CD-Rom weitere sollen folgen

    Stage2 soll etwas aufgebohrt werden

    -eine rudimentäre Shell(nur das wichtigste)
    -ein Automatischer Updater wie er z.B. aus DVD playern bekannt es der beim Booten das vorhandensein einer bestimmten Datei prüft und das System dann auf dem neusten stand bringt.
    -Netzwerksupport zum einen nach bestimmten Dateien Dort auschau halten und lokal kopieren und vorallem soll es ne Einstellung geben in der das ganze System ubers netzwerk geladen wird
    -sowie ein einfaches Web und Konsolen(Seriel und ParallelPort) Interface(Modulbasierend)

    Das System selbst wird dann relativ einfach bleiben

    -nur Single User aber immerhin Multitasking

    Das besondere soll der Fenstermanager sein dieser soll ganz einfach sein und Optisch wird er wohl noch weit hinter Win3.11 liegen.

    Wobei ich mich von der Funktionsweise gern einer Mischung aus Windows GDI und Linux X11 bedien wollen würde.

    ein Programmfenster soll sich nur mit ein paar Textzeilen beschreiben lassen das Rendern übernimmt das OS komplett selbst.
    Und vom X11 brauch ich das Konzept Client Server für nen Genialen aber sinnlosen Trick. der eine Server soll der Normale halt Fensterln auf dem Bildschirm.

    Der andere das war mal ne Spinnerei die ich mal probiert habe lauscht auf nem Netzwerkport ob sich der User anmeldet wenn Ja und Passwort stimmt sendet er ihm eine kleine Webseite mit Java(Ajax?)die Praktisch einen X11 Clienten darstellt.

    Und so hat man dann den Desktop direkt auf seinen Browser.
    Ich hatte das mal bei nem Steuerprogramm aus spaß implementiert ganz Rudimentär.
    Und ich persönlich sowie anwesende Bastelfreaks fanden das eigentlich ganz genial.

    Nun zu meinen Fragen

    Etwas was bis jetzt nicht klären konnte wo schaltet man besser in den Protectet modus? im Bootloader oder im Kernel?

    Zur Umbauaktion des Bootloader hier mal die Original Batchdatei Build.bat

    @echo off
    echo This script builds the Cottontail Bootloader from source. You will
    echo need JLOC, Borland Turbo C 2.0, and NASM 0.98 all installed and within
    echo reach of your PATH variable.
    echo Building 2nd stage bootloader...
    tcc -c cbl.c
    tcc -c text.c
    tcc -c fat.c
    nasm -f obj cbl_stub.asm
    echo ALL: > jloc.conf
    echo 	cbl.obj >> jloc.conf
    echo	text.obj >> jloc.conf
    echo	fat.obj >> jloc.conf
    echo	cbl_stub.obj >> jloc.conf
    echo CBL: 0 800 0 >> jloc.conf
    echo	* >> jloc.conf
    jloc jloc.conf bin\cbl.bin
    del cbl.obj
    del text.obj
    del fat.obj
    del cbl_stub.obj
    del jloc.conf
    echo Done.
    echo Building 1st stage bootloader...
    nasm boot.asm -o bin\boot.bin
    echo Done.
    pause
    @echo on
    

    und hier die build.sh

    #!/bin/sh
    
    # Simple way to compile
    
    echo "This Script Builds the Bootloader Stage 1 and Stage 2"
    echo "and the Kernel from S-OS"
    
    echo "------======Building 1st stage bootloader======------"
    nasm -f bin ./stage1/boot.asm -o ./bin/boot.bin
    echo "Done."
    
    echo "------======Building 2st stage bootloader======------"
    echo "------======Build objectfiles with GCC======------"
    gcc -c -ffreestanding -nostdinc ./cbl.c -o ./objects/cbl.o
    echo "Done."
    gcc -c -ffreestanding -nostdinc ./text.c -o ./objects/text.o
    echo "Done."
    gcc -c -ffreestanding -nostdinc ./fat.c -o ./objects/fat.o
    echo "Done."
    
    echo "------======Build objectfile with NASM======------"
    nasm -f aout ./cbl_stub.asm -o ./objects/cbl_stub.obj
    echo "Done."
    
    # Put kernelasm.o first so it IS loaded first!
    ld  -T link.ld --verbose -o ./objects/cbl ./objects/cbl_stub.obj ./objects/cbl.o ./objects/text.o ./objects/fat.o
    objcopy -R .note -R .comment -S -O binary ./objects/cbl cbl.bin
    
    echo "Done."
    
    exit
    

    sowie die link.ld

    OUTPUT_FORMAT("binary")
    ENTRY(cbl_main)
    SECTIONS
    {
      .text  0x1000 : {
        code = .; _code = .; __code = .;
        *(.text)
        . = ALIGN(4096);
      }
      .data  : {
        data = .; _data = .; __data = .;
        *(.data)
        . = ALIGN(4096);
      }
      .bss  :
      {
        bss = .; _bss = .; __bss = .;
        *(.bss)
        . = ALIGN(4096);
      }
      end = .; _end = .; __end = .;
    }
    

    Ob man auch beim C Code was ändern muss weiss ich leider nicht gcc spuckt keine Fehler aus. das zeug mit NASM würd ich mal behaupten ist in Ordung da auf beiden seiten NASM verwendet wird aber über das Linken was das auch schon wieder



  • Irgendwann mal (wenn ich Rentner bin oder so [bin gerade 17]) will ich auch ein OS schreiben.

    Egal..

    Gibts mal ein Update (evtl. sogar ein Image)??



  • Komische Träume habt ihr 🙄



  • Ich will weder Linux noch Windows nachmachen,
    es geht lediglich um eine Oberfläche...

    Klar wenn ich die habe werde ich solange an der Funktionalität arbeiten bis ich den Hungertot an der Tastatur sterbe 😃 aber dass ist ja auch egal :p

    Ne eigentlich war mein Traum immer ein 3D Spiel...
    Aber dass ist Sinnfrei im vergleich zu einem Betriebssystem.

    Währ echt endgeil sone Oberfläche zu machen, frei nach dem Motto: CD ins Laufwerk, auf leere Festplatte installieren, Starten, und fertig.

    Hammer 😮



  • Hi,

    falls du nur sowas wie Hallo Welt ausgeben willst empfehle ich folgenden Link:
    http://www.tutorials.de/forum/programming-tutorials/20706-ein-eigenes-kleines-betriebssystem.html
    Es ist zihmlich idiodensicher erklärt!!!
    Statt:
    "Eine Taste drücken, um neu zu starten..."
    kann man auch schreiben:
    "Hello World"



  • Darf ich vorschlagen, diesen amüsanten Thread nach "Projekt: OS-Development" zu verschieben?

    Hier findest Du einen recht guten Einblick in den Einstieg in ein OS:
    http://www.henkessoft.de/OS_Dev/OS_Dev1.htm

    Hier findest Du ebenfalls Einsteiger und "Semi-Profis", die gemeinsam an einem einfachen OS werkeln:
    http://www.c-plusplus.net/forum/viewforum.php?f=62&sid=5f05332549d35ba559b92291396cfa5e



  • Ich würd den thread einfach löschen, weil die Diskussion absurd ist, bzw. keine vernünftigen antworten gegeben wurden.



  • Dieser Thread geht nirgendwo hin, ausser vielleicht ins Datennirvana.
    Der Thread ist eine Mumie, bereits 2005 erstellt, und weder damals noch in juengster Vergangenheit wurden, wie blitzmaster feststellte, wirklich bedeutende Antworten geschrieben. Ich sehe auch kein Potential, dass sich das nochmal aendert.


Anmelden zum Antworten