Autor Thema: Richtiges Design?  (Gelesen 13909 mal)

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« am: 11. June 2006, 14:42 »
moin,

ist meine überlegung richtig bzw sinnvoll?

bootloader -----> load kernel ->
                                           |->1. vesa einschalten
                                           |->2. in PMode schalten
                                           |->3. A20 gate einschalten
                                           |->4. Filesystem einbinden (FAT12)
                                           |->5. Wichtige Dateien laden
                                           |->6. GUI etc öffnen
thetrue way is my way

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 11. June 2006, 14:52 »
mh... dateisystem im bootloader wäre auch sinnvoll....mit vesa kenn ich mich net aus aba glaube das kann man erst im pmode anschalten oder?

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #2 am: 11. June 2006, 15:51 »
Zitat von: Coffee
mh... dateisystem im bootloader wäre auch sinnvoll....mit vesa kenn ich mich net aus aba glaube das kann man erst im pmode anschalten oder?
Nein, VESA kannst du nur im RM anschalten (stimmt nichts ganz aber fast). ^^

bitmaster
In the Future everyone will need OS-64!!!

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 11. June 2006, 16:39 »
Zitat von: Coffee
mh... dateisystem im bootloader wäre auch sinnvoll....

das ist ja erstmal egal. hauptsache der bootloader kriegt den kernel in den speicher. wie das geht ist ein implementation detail.

@thetrue: das a20-gate würde ich vor dem sprung in den protected mode setzen, weil je nach dem wie umfangreich dein "in den protected mode schalten" ist, brauchst du schon die ungeraden mbyte zahlen.

du solltest nicht vergessen die interrupts und ggf. paging. zu aktivieren, und die irqs zu verwalten.
Dieser Text wird unter jedem Beitrag angezeigt.

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #4 am: 11. June 2006, 17:31 »
nja, leider habe ich zu wenig ahnung, was pagging ist etc,

und interrupts gibts ja in pmode nicht oder?
thetrue way is my way

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 11. June 2006, 17:46 »
klar gibt es interrupts. wie soll sonst die hardware dem prozessor/betriebssystem sagen, dass es irgendwas zu tun gibt?

ich vermute du verwechselt das mit den bios interrupts. das sind software interrupts. dein betriebssystem wird später evtl. auch software interrupts zur verfügung stellen müssen, damit deine (user mode) programme überhaupt irgendwas machen können. (dateien öffnen, speicher anfordern, andere programme starten, etc.)

mehr gibts z.b. unter: http://www.mega-tokyo.com/osfaq2/index.php/InterruptsForDummies

wenn du paging nicht kennst, dann kannst du das ja erstmal aufschieben. man kann schon einiges machen, ohne paging anzurühren.
Dieser Text wird unter jedem Beitrag angezeigt.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 11. June 2006, 22:58 »
Ich würde die ersten paar Punkte übrigens durch "GRUB benutzen" ersetzen. Der Rest macht noch genug Arbeit, da brauche ich nicht auch noch den Bootloader selbst schreiben, den ich vorgefertigt benutzen kann, ohne mich großartig einzuschränken.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Thoth

  • Beiträge: 62
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 20. June 2006, 12:13 »
Ich würde hingegen den Bootloader unbedingt selber schreiben. Denn wenn man nichtmal das hinkriegt, kann man die Entwicklung eines etwas grlößeren OS sowieso knicken - also man lernt einfach ne ganze Menge dabei und außerdem machts Spaß :D
Madness isn't a bug - it's a feature

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 20. June 2006, 13:06 »
Man könnte auch sagen, dass man unbedingt das BIOS unbedingt selber schreiben muss. Oder Mikrocode-Updates. Oder selbst eine Platine mit Prozessor, RAM, Controllern, etc zusammenlöten sollte. Oder gleich einen Prozessor. Macht auch alles Spaß. Aber der Sinn von OS-Development ist es nicht, sich mit den 1000 Hürden, die beim Entwickeln eines Bootsektors auftauchen auseinander zu setzen.
- A20-Gate
- zwangsläufiges Arbeiten und Auseinandersetzung sowohl mit Protected Mode als auch Real Mode
- Beachtung von Inkompatibilitäten der verschiedenen BIOS
- Abschalten des Diskettenlaufwerksmotors
- Festplatten-/Diskettengeometrie (CHS<->LBA, Limits von Festplattengrößen und BIOS-Fähigkeiten)
- Umsetzung eines Dateisystems
- überhaupt vollständiges und korrektes Laden einer Datei (worauf viele Probleme hier im Forum zurückzuführen sind)
- Überprüfung der verfügbaren Speicherbereiche
- Vermischung von 16-Bit und 32-Bit Code (was noch mal einen Großteil von hier im Forum auftauchenden Problem ausmacht)
- Schalten in einen Grafikmodus vor dem Wechsel in den Protected Mode
- Kompatibilität mit Bootloadern von Drittherstellern
- Fähigkeit andere Systeme zu booten

Mal einen Bootloader zum Ausprobieren, was das Ding überhaupt macht, ist ok. Aber wenn man was haben will, dass zuverlässig funktioniert, dann ist die Verwendung eines fertigen Bootloaders wesentlich sinnvoller. Wenn man allerdings statt eines OS einen Bootloader schreiben will, und sich auch darauf konzentrieren will, ist es natürlich OK einen Bootloader zu schreiben.
Dieser Text wird unter jedem Beitrag angezeigt.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 20. June 2006, 14:22 »
@PorkChicken: Danke, du nimmst mir die Worte aus dem Mund. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #10 am: 20. June 2006, 14:50 »
@PorkChicken: Aus deiner sicht vielleicht, ja. Ich möchte aber ein OS schreiben. So, jetzt könnte ich grub etc. benutzen. Nur das ich ein eigenes Dateisystem progge, also kein FAT, NTFS, ReiserFS etc. Und dieses Dateisystem kennt nun mal kein OS-Loader der Welt außer mein eigener. Ich möchte kein vorhandenes Dateisystem benutzen. Ich werde natürlich später Dateisysteme von CD Formaten etc. unterstützen um auch in bzw. M$ Word unter Windows geschriebene Dokumente öffnen zu können. Aber die verwendeten Dateisysteme in meinem OS, heißt womit meine OS-Partition formatiert sein wird (bis jetzt nur Diskette) wird halt ein eigenes Dateisystem sein. Ich verwende z.B. kein FAT12, weil ich keinen bock auf 8.3 Dateinamen habe. Ich habe bis jetzt zwar nur 6.4 Dateinamen, aber das war damals nur so zum Test. Ich verbessere gerade mein Dateisystem. Somit werde ich lange Dateinamen unterstützen. Gut, dann könnte ich auch ReiserFS nehmen. Aber da spricht wieder anderes dagegen. Na ja, also in meiner Situation ist es unmöglich einen vorhandenen OS-Loader zu benutzen.

bitmaster
In the Future everyone will need OS-64!!!

C#ris

  • Beiträge: 47
    • Profil anzeigen
    • http://www.xerxys.org
Gespeichert
« Antwort #11 am: 20. June 2006, 15:02 »
Zitat von: bitmaster
Na ja, also in meiner Situation ist es unmöglich einen vorhandenen OS-Loader zu benutzen.

Warum nimmst du nicht ext2? Das ist einfach wie FAT12, besser dokumentiert und sehr leistungsfähig. Und GRUB kann davon booten...
Aber vermutlich braucht ihr nur nen Grund nen eigenen Loader zu schreiben :roll:

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 20. June 2006, 16:16 »
Ich lade meinen Kernel noch immer RAW von Diskette! :D
Und meine Kernelprüfsumme wird auch noch im BL getestet, aber das kann man leicht ändern.

@C#ris: Ist ext2 wirklich so einfach?
db 0x55AA

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 20. June 2006, 16:37 »
also ich find wenn jemand nen Bootloader selber machen will, soll er halt
mitm OS ist es doch das Gleiche, wenn ihr einfach Linux benutzt spart ihr euch nen Haufen Arbeit, trotzdem macht ihr ein eigenes ;-)

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #14 am: 20. June 2006, 21:50 »
Zitat von: scales of justice
also ich find wenn jemand nen Bootloader selber machen will, soll er halt
mitm OS ist es doch das Gleiche, wenn ihr einfach Linux benutzt spart ihr euch nen Haufen Arbeit, trotzdem macht ihr ein eigenes ;-)
Ich progge mir ein OS um zu lernen. Wenn ich jetzt gemein wäre könnte ich einen Link zu Linux posten. Ja, ich bin so gemein: http://www.computerwoche.de/knowledge_center/linux/575895

bitmaster
In the Future everyone will need OS-64!!!

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #15 am: 21. June 2006, 13:25 »
also durch schreiben eines eigenen dateissystems und eines eigenen bootloader für dieses dateisystem lernst du aber nichts, was wirklich mit osdev zu tun hat. im endeffekt schreibst du n kleinen treiber, den du dann später in den kernel integrieren kannst: du setzt dich damit nicht mit dem computer an sich auseinander, sondern nur mit etwas, was du sowieso schon selbst ausgedacht hast und warscheinlich nur für testzwecke sinnvoll ist.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 21. June 2006, 14:28 »
also ich denke schon, dass man dadurch etwas lernt:

- wie man in den Pmode wechselt
- wie man die Deskriptoren initalisiert
- wie man die gdt lädt

und auch wenn man ein eigenes Dateisystem entwickelt lernt man doch etwas, überhaupt wie man ein gutes Dateisystem erstellt, platz spart, und allgemeines über die Fesplatte

warum sollte man dabei nichts lernen?
Im Grunde lernt man durch alles

C#ris

  • Beiträge: 47
    • Profil anzeigen
    • http://www.xerxys.org
Gespeichert
« Antwort #17 am: 21. June 2006, 15:01 »
Zitat von: scales of justice

- wie man in den Pmode wechselt
- wie man die Deskriptoren initalisiert
- wie man die gdt lädt

Für die OS Entwicklung ist es nicht notwendig so etwas zu wissen. Gut wenn es jemanden interessiert, soll er sich damit auseinander setzen.
Man kommt aber mit konkreten Entwicklungen nicht voran, wenn man ständig versucht das Rad neu zu erfinden...Wenn jemand einen Sachverhalt schon erstklassig gelöst hat (s. GRUB), dann macht es keinen Sinn sich damit noch einmal zu beschäftigen....

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #18 am: 21. June 2006, 15:19 »
Zitat von: C#ris
Für die OS Entwicklung ist es nicht notwendig so etwas zu wissen. Gut wenn es jemanden interessiert, soll er sich damit auseinander setzen.
Man kommt aber mit konkreten Entwicklungen nicht voran, wenn man ständig versucht das Rad neu zu erfinden...Wenn jemand einen Sachverhalt schon erstklassig gelöst hat (s. GRUB), dann macht es keinen Sinn sich damit noch einmal zu beschäftigen....

DAS seh ich wiederum anders: Man sollte doch zumindest ein bisschen mim Protected-Mode (also auch mit Deskriptoren erstellen, GDT laden, etc...) gespielt haben BEVOR man seinen Kernel anfängt, sonst wird das eher frustrierend. Aber das kann man bespielsweise auch aus DOS heraus oder aber man schreibt es zu Testzwecken in nen Bootloader. TROTZDEM würd ich aber niemand empfehlen (und vorallem keinem Anfänger) sich nen eigenen Bootloader zu schreiben. Des macht wirklich keinen Sinn
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 21. June 2006, 16:01 »
Hi

vorallem macht in zukunft grub, ... und vieles anderes keinen sinn mehr  

ich sach nur EFI ;)

gruss

 

Einloggen