News Profil Themen Bücher Magazine Links Kontakt

Neue Serverkonfiguration

2003-03-05 Aber das Problem ist in meinem Falle nicht die Disketten zu formatieren, sondern von diesen dann auch zu booten. Dazu müssen wir uns mal den Bootvorgang selber ansehen. Dieser wird vom BIOS veranlasst nach dem die Hardware initialisiert ist. Dann versucht das BIOS in der Boot-Reihenfolge (entweder per Default erst Diskette, dann Harddisk, oder wie per Setup eingestellt) den sog. Bootsector zu laden.

Dieser liegt auf dem zu bootenden Medium als erster Sektor und wird in den Speicher an eine bestimmte Adresse geladen (0x0000:7C00). Danach ruft das BIOS dann die Software an dieser Adresse auf. Von da ab übernimmt dieser kleine Softwareschnipsel die komplette Kontrolle über den Rechner.

Das funktioniert in dem der kleine Schnipsel von der Diskette weitere Software nachläd und sich so, Münchhausen ähnlich, an den eigenen Haaren aus dem Sumpf zieht. Schauen wir uns das mal am Beispiel von DOS (etwa MS-DOS 6.22) an.

DOS ist in diesem Falle in den drei Dateien MSDOS.SYS, IO.SYS und COMMAND.COM verborgen. Die ersten beiden müssen im Hauptverzeichnis stehen. Der Schnipsel liest dieses beim Booten ein, sucht die Datei IO.SYS, läd diese in den Hauptspeicher und springt dann dort hin. IO.SYS läd MSDOS.SYS, MSDOS.SYS überprft die CONFIG.SYS auf zusätzliche Informationen und läd dann, nach dem ggf. noch in der CONFIG.SYS erwähnte Dateien geladen wurden, die Benutzerschnittstelle COMMAND.COM nach ... Bei allen anderen Betriebsystemen und Datenträgern ist es im Prinzip ähnlich.

Die erste Frage müsste jetzt sein: Woher weiss der Bootsector wo das Hauptverzeichnis ist? Und man könnte jetzt vermuten, das dies bei einer bestimmten Diskettengröße immer an derselben Stelle ist (was im Prinzip auch stimmt). Also kann man einfach das BIOS nach der Art des Laufwerkes fragen und dann aus einer Tabelle die entsprechende Position ermitteln?

Und natürlich ist dem nicht so. Schliesslich kann ein und dasselbe Laufwerk Disketten verschiedener Formate schlucken. Was ist denn wenn in dem 1,2MB Laufwerk (80 Tracks * 15 Sektoren) eine 180MB-Diskette liegt? Nein, das muss flexibler gehen.

Und tut es auch. Jeder Bootsektor beginnt mit einer Tabelle, die wie folgt aufgebaut ist.

OffsetLängeKommentar
03Sprungbefehl
38OEM-Name (z.B. "MSDOS5.0")
112Bytes per Sektor
131Sektoren per Cluster
142Reservierte Sektoren
161Anzahl FATs
172Anzahl der erlaubten Einträge im Hauptverzeichnis
192Anzahl der Sektoren (unterhalb 32MB)
211MediaType
222Anzahl der Sektoren pro FAT
242Sektoren pro Track
262Anzahl der Köpfe
284Anzahl der versteckten Sektoren
324Anzahl der Sektoren
361Laufwerksnummer
371(Reserviert)
381(Reserviert)
394Nummerisches Label
4311Name des Datenträgers
548Name des FileSystems (z.B. "FAT12")
62[Ende]

Das Ganze schauen wir uns an einem konkreten Beispiel im nächsten Teil an.

wird fortgesetzt ...