Lowlevel

Lowlevel => OS-Design => Thema gestartet von: thetrue am 11. June 2006, 14:42

Titel: Richtiges Design?
Beitrag von: thetrue 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
Titel: Richtiges Design?
Beitrag von: Coffee 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?
Titel: Richtiges Design?
Beitrag von: bitmaster 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
Titel: Richtiges Design?
Beitrag von: Jidder 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.
Titel: Richtiges Design?
Beitrag von: thetrue 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?
Titel: Richtiges Design?
Beitrag von: Jidder 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.
Titel: Richtiges Design?
Beitrag von: kevin 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.
Titel: Richtiges Design?
Beitrag von: Thoth 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
Titel: Richtiges Design?
Beitrag von: Jidder 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.
Titel: Richtiges Design?
Beitrag von: kevin am 20. June 2006, 14:22
@PorkChicken: Danke, du nimmst mir die Worte aus dem Mund. ;)
Titel: Richtiges Design?
Beitrag von: bitmaster 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
Titel: Richtiges Design?
Beitrag von: C#ris 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:
Titel: Richtiges Design?
Beitrag von: Osbios 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?
Titel: Richtiges Design?
Beitrag von: scales of justice 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 ;-)
Titel: Richtiges Design?
Beitrag von: bitmaster 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
Titel: Richtiges Design?
Beitrag von: maumo 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.
Titel: Richtiges Design?
Beitrag von: scales of justice 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
Titel: Richtiges Design?
Beitrag von: C#ris 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....
Titel: Richtiges Design?
Beitrag von: bluecode 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
Titel: Richtiges Design?
Beitrag von: Termite am 21. June 2006, 16:01
Hi

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

ich sach nur EFI ;)

gruss
Titel: Richtiges Design?
Beitrag von: scales of justice am 21. June 2006, 16:24
ich denk EFI braucht noch einige Zeit

Windows XP unterstützts nicht, Vista auch noch nicht richtig,
dabei gabs schon Windows 2000 Versionen dei das konnten

außerdem soll Vista nur auf 64-Bit Systemen EFI unterstützen und bis 32-Bit komplett verdrängt ist, dauerts wohl auch noch ne Weile


Zitat
Für die OS Entwicklung ist es nicht notwendig so etwas zu wissen.


warum nicht? das gehört zu den grundlegenden Dingen
Zitat

Man kommt aber mit konkreten Entwicklungen nicht voran, wenn man ständig versucht das Rad neu zu erfinden


wenn man ein OS schreibt entwickelt man doch genauso das Rad neu

Zitat
TROTZDEM würd ich aber niemand empfehlen (und vorallem keinem Anfänger) sich nen eigenen Bootloader zu schreiben


grade das würde ich einem Anfänger empfehlen, weil man so die grundlegenden dinge vom Pmode lernt und auch ohne großes drumherum schonmal Sachen ausprobieren kann (Bios Ints, Text, Tastatur, ...)
Titel: Richtiges Design?
Beitrag von: bluecode am 21. June 2006, 17:08
Zitat von: scales of justice
grade das würde ich einem Anfänger empfehlen, weil man so die grundlegenden dinge vom Pmode lernt und auch ohne großes drumherum schonmal Sachen ausprobieren kann (Bios Ints, Text, Tastatur, ...)

Genau das meine ich ja, zum rumspielen macht es Sinn sowas in den Bootsektor zu schreiben. Aber ein Programm im Bootsektor macht noch lang keinen Bootloader...
Titel: Richtiges Design?
Beitrag von: scales of justice am 21. June 2006, 19:14
der Unterschied zwischen Programm im Bootsektor und Bootloader ist eigentlich nur, dass der Bootloader nen Kernel lädt und das wird ein Anfänger auch ziemlich einfach hinbekommen
Titel: Richtiges Design?
Beitrag von: Legend am 21. June 2006, 19:24
Wenn er es nicht mal ansatzweise hinbekommt (so in der Art "Assembler? Was ist das?"), wird er bei Benutzen von GRUB mit eigenm Kernel irgendwann wieder auf die selben Probleme treffen, dann mit komplexerem Rahmen.
Titel: Richtiges Design?
Beitrag von: bluecode am 21. June 2006, 20:12
Zitat von: scales of justice
der Unterschied zwischen Programm im Bootsektor und Bootloader ist eigentlich nur, dass der Bootloader nen Kernel lädt und das wird ein Anfänger auch ziemlich einfach hinbekommen


Sry, aber das ist nicht das was ich unter Bootloader versteh und genau das ist das was dann nach einiger Zeit extreme Probleme bereitet. Bootloader sollte auch > 1MB laden, A20, pmode, und so schickschnack... Grub macht halt all das und das auch noch gut und so, dass man zB auf der Linux partition lassen kann und man nur noch grub configen muss (4Zeilen), dann neustarten und schwups kann man sein OS von der Festplatte laden und nicht von so lahmen Disketten.

@Legend: Das man vorher mal mit Pmode etc. rumgespielt haben muss, hab ich ja bereits gesagt...
Titel: Richtiges Design?
Beitrag von: bitmaster am 22. June 2006, 01:42
Also es ist ja ein unterschied zwischen Bootloader und OS-Loader. Obwohl ein Bootloader eigentlich soetwas ist wie der Code des MBR der eine Bootbare Partition läd. Deswegen auch bootloader. Das was viele als Bootloader bezeichnen ist eigentlich keiner. Sie meinen den ersten Sektor der Diskette (oder einer Partition die durch den Bootloader evt. geladen wurde). Ich weiß jetzt nicht genau wie man diesen ersten Sektor bezeichnet. Aber ich glaube man sagt bootstrap dazu. Und dieser soll das A20 aktivieren, in den Pm schalten und somit eine gdt und evt. idt etc. haben? Also dieses konzept finde ich erlich gesagt blöd. Bei meinem bootstrap wären außerdem 512 Byte dann zu klein (eigenes Dateisystem integriert). Ich finde das sollte alles ein OS-Loader übernehmen (ist bei meinem OS + GUI zwar nicht so, aber das hat andere Gründe). Also so in etwa finde ich es ganz OK:

Bootstrap läd OS-Loader (nur RM-Code)

OS-Loader läd kernel etc. (springt in den PM und dann zum kernel oder so änlich) (also erst RM-Code und dann PM-Code)

kernel etc. (nur PM-Code)

bitmaster
Titel: Richtiges Design?
Beitrag von: scales of justice am 22. June 2006, 20:29
also so wie ich das seh, verstehen wir hier unter Bootloader alle was anderes,
dann wird wohl nur noch die Definition von "Bootloader" helfen können

ich glaub nur in nem Lexikon wird man die nicht finden...
Titel: Richtiges Design?
Beitrag von: kevin am 22. June 2006, 21:50
Aber vielleicht in einer Enzyklopädie: http://de.wikipedia.org/wiki/Bootloader ;)
Titel: Richtiges Design?
Beitrag von: scales of justice am 23. June 2006, 13:55
hab ich schon geguckt

aber da kann jeder reinschreiben was er will ;-)
Titel: Richtiges Design?
Beitrag von: kevin am 23. June 2006, 14:22
Wenn es aber immer noch so dasteht, ist die Wahrscheinlichkeit groß, daß die meisten mit dieser Definition einverstanden sind. ;)
Titel: Richtiges Design?
Beitrag von: hannibal am 26. June 2006, 00:27
Ich persoenlich bin am Bootloader gescheitert, weil ich einfach keine Lust hatte mich so intim mit einer Materie auseinander zu setzen, die ich mit Hilfe dieses Bootloaders eigentlich nur ueberspringen will. Das ist auch der Grund, warum ich Grub verwende - das, und die Vielfalt die mir Grub sonst noch bietet. Nicht zuletzt verwenden die meisten Leute Grub zum booten von Linux.

ad Problemchen, die man beim Bootloader schreiben hat, die danach in groesserem Rahmen vorkommen: Schwachfug. Sonst haette ich wohl keine funktionierende GDT, IDT (, PageTable .. noch nicht fertig implementiert :P).

Achja.. nicht jeder hat Lust sich nur mit Assembler, oder einem uralt TurboC herumzuschlagen. Ich setz mich eben gern zum gedeckten Tisch und esse dann vom vollen Teller. :)

Lg, Alex
Titel: Richtiges Design?
Beitrag von: Noobtotal am 24. July 2006, 12:45
Allerdings will ich ja auch als Anfänger im RM arbeiten. Dann wäre meine Zusammenstellung mit Grub ja recht doof:

Titel: Richtiges Design?
Beitrag von: Termite am 24. July 2006, 12:59
Hi

für mich ist ein BootLoader ein Stück software, das ein OS zum laufen bringt. Das was Grub, lilo ja auch macht. Das andere ist für mich der Bootsektor. Ein Bootsektor kann ein Bootloader sein, wenn er da hinein passt, muss aber nicht. Er kann auch nur dazu dienen, einen Bootloader zu starten. Siehe z.B. Grub (Stage1, Stage 1.5, Stage 2 ) Grub hat glaubich sogar verschiedene Bootsektoren, Je nach Bootmedium und dateisystem

gruss
Titel: Richtiges Design?
Beitrag von: bitmaster am 24. July 2006, 16:37
Eine Diskette hat keinen Bootloader. Der Bootloader ist das stück Code was z.B. auf einer Festplatte beim MBR ist und die Bootpartition läd (deswegen auch bootloader). Auf dieser Bootpartition ist der Bootstrap der auch auf der Diskette zu finden ist (sein sollte). Dieser läd den OS-Loader (grub etc.) und dieser läd das OS.

bitmaster
Titel: Richtiges Design?
Beitrag von: Noobtotal am 25. July 2006, 18:58
Das heisst also, die Bootloader die die meisdten hier schreiben, sind keine Bootloadert, sondern OS-Loader im Bootsektor. Der Bootloader ist das BIOS welches zu diesem zweck mehrere BIOS Interrupts aufruft. Hab ichs jetzt richtig verstanden?
Titel: Richtiges Design?
Beitrag von: hannibal am 26. July 2006, 06:46
Zitat von: Noobtotal
Das heisst also, die Bootloader die die meisdten hier schreiben, sind keine Bootloadert, sondern OS-Loader im Bootsektor. Der Bootloader ist das BIOS welches zu diesem zweck mehrere BIOS Interrupts aufruft. Hab ichs jetzt richtig verstanden?


Jap.
Titel: Richtiges Design?
Beitrag von: Noobtotal am 26. July 2006, 13:31
*stolz bin* :lol:  :D  :) !