Autor Thema: Bootmediumtreiber & Speicheraufteilung  (Gelesen 8509 mal)

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« am: 18. January 2005, 19:40 »
Hej,

ich habe mir mal Gedanken gemacht zum theoretischen Aufbau vom Booten. Und das grösste Problem, was mir spontan einfällt, ist der Kernel. Dieser braucht ja einen Treiber um das Bootmedium zu finden.

Nun habe ich den gedanklichen Haken bzw. die Unwissenheit, wie gross ein Treiber(chen) sein muss um Unabhängig vom Bootmedium Sektoren lesen zu können. Da ich mir ueberlege, dass der Bootloader den Kernel in den Speicher lädt (oder besser 384 KB davon), der im Realmode läuft und per BIOS den Dateisystemtreiber nachlädt. Dafuer habe ich rund 64 KB reserviert. Reicht das aus?

Habe ich vielleicht einen Denkfehler drin, also dass ich mit dieser Technik beispielsweise nicht von USB booten könnte? Ich möchte den Kernel nämlich insofern trennen, als dass nur Disketten direkt als Bootmedien verwendet werden können. Erinner mich duester, dass das damals bei SCSI und Linux ein arges Problem war, welches am Ende mit verschiedensten Kerneln endete. Wie das heute ist, weiss ich allerdings nicht.

Macht mal Vorschläge - wie viel Platz (im Bereich bis 640 KB) kann ich im RM fuer Kernel und Dateisystem reservieren und wie viel muss ich als Speicher fuer den PM verwenden?
Im PM brauche ich ja eine komplett andere Speicheraufteilung, die ich im RM aufbauen muss. Wie gross sind die darunterliegenden Strukturen?

Danke fuer eure Bemuehungen an mir armen Anfänger...

Gruesse Svenska

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #1 am: 19. January 2005, 15:45 »
Naja bei mir ist der Bootloader dafür zuständig dem Kernel mitzuteilen von wo aus gebootet wurde. Im Kernel selbst steht dann ein switch was diese Möglichkeiten abfragt und je nach dem ein anderes Laufwerk, als root in mein Virtuelles Dateisystem einbindet. Der Kernel lädt anhand dessen dann aus dem root die anderen Elemente.
Der Bootloader muss in meinem OS also folgendes in dieser Reihenfolge tun:
1. Die GDT an die Adresse 0x20000 laden
2. Die IDT an die Adresse 0x30000 laden
3. Den Kernel an die Adresse 0x10000 laden
4. Das Bootlaufwerk an eine dafür reservierte Stelle im Kernel schreiben (0x1000C)
5. In den PM wechseln
So der Kernel selbst hat nur die nötigstens Lesefunktionen um weitere Treiber zu laden, und nur ein VFS in Grundzügen, die richtigen Module ersetzen diese dann
im Bereich bis zur 1MB Grenze ist bis auf 128 KB alles verplant für verschiedene Dinge, ich bin sicher die werden auch nich zugepflastert, alles was darüber liegt verwaltet schon mein Memorymanager (hab also kein Problem mit Speicheraufteilung im PM, da dort alles automatisch passiert, und auch meiner Meinung nach alles zu 98% Gut funktioniert, die restlichen 2% wären vielleicht noch optimierung^^
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 20. January 2005, 11:20 »
Ich nehm es erstmal zur Kenntnis, da ich gleich wieder zum Unterricht muss :)
Wenn ich mir mal wieder die Hexadezimalzahlen zu Gemuete fuehre (wahrscheinlich heut Nachmittag), dann werd ich genaueres dazu schreiben können.

Vielleicht poste ich dann mal meine (gedankliche) Speicheraufteilnug und ihr bewertet oder so :) Hab noch nicht wirklich Ahnung. Leider...

Svenska

PS: Ich mag lange Aufsätze :)

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 20. January 2005, 18:15 »
Also, ich habe mir das in etwa folgendermassen gedacht.
Der Bootloader lädt den RM-Kernel mittels BIOS-Funktionen an eine feste Speicheradresse und fuehrt ihn aus. Logisch.
Dieser Kernel prueft ein paar Systemvoraussetzungen (i386+, 2 MB RAM, MDA/CGA+ etc) und checkt das Bootlaufwerk ab.
Ist es nicht das Diskettenlaufwerk, so lädt er mit den Biosfunktionen den Treiber nach und richtet den Speicher PM-kompatibel ein (umgebaut wird sowieso später noch). Dann lädt er im PM mit dem geladenen Treiber den "richtigen" Kernel und bootet ihn.
Nun meine Frage: Habe ich einen Denkfehler drin, wenn es um Bootmedien á la USB etc. geht oder ist das möglich?


An die Speicheraufteilung habe ich in etwa so gedacht (im RM)
(verzeiht mir die Dezimaladressen...)

1024k
BIOS-Datenbereich (nicht anfassen; 384 KB)
640k
RM-Kernel (384 KB)
256k
Bootmediumstreiber, wenn nötig (128 KB)
128k
PM-Speicher (Anfangs-GDT usw. ; 64 KB)
64k
Stack (56 KB)
8k
Bootloaderinformationen (was das BIOS erlaubt; 7 KB)
1k
RM-IDT (festgelegt, 1 KB)
0k

reicht das von der Platzaufteilung oder ist das vollkommen schrott?

Svenska

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 20. January 2005, 20:00 »
zum speicher kann ich dir nix sagen, wegen usb-booten: das dürfte sich genauso verhalten wie bei normalen laufwerken, vorausgesetzt das bios unterstützt booten per usbfloppy überhaupt ;)
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #5 am: 20. January 2005, 20:01 »
Zitat von: N00B
zum speicher kann ich dir nix sagen, wegen usb-booten: das dürfte sich genauso verhalten wie bei normalen laufwerken, vorausgesetzt das bios unterstützt booten per usbfloppy überhaupt ;)


wie wird denn das laufwerk da angesprochen? (RM) mit bios-ints oder wie? was wird dann in dl gegeben?
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 20. January 2005, 21:05 »
wie solls anders sein? ich geh mal stark davon aus das es so ist ^^
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 20. January 2005, 21:29 »
Geile Antwort... ueberhaupt nicht auf die Frage bezogen *lol*

Ich wuerde sagen, dass ne USB-Floppy als "A:" angesprochen wird im RM... muesste man nur abchecken, ob es auch ne USB-Floppy is.
Mich interessieren eher USB-HDDs etc...

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #8 am: 21. January 2005, 14:53 »
Zitat von: Svenska
Geile Antwort... ueberhaupt nicht auf die Frage bezogen *lol*

Ich wuerde sagen, dass ne USB-Floppy als "A:" angesprochen wird im RM... muesste man nur abchecken, ob es auch ne USB-Floppy is.
Mich interessieren eher USB-HDDs etc...


*g* ich dachte irgendwie, es geht um USB-Sticks...
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 21. January 2005, 18:24 »
*g* ich meinte N00b :-)

 

Einloggen