Hallo Bio,
Ich bin der Überzeugung, dass die Konfiguration (z.B. boot.ini oder lilo.conf) vom Bootloader beim (Neu-)Schreiben des Bootblocks lediglich einmal eingelesen wird und beim wirklichen Booten nicht verwendet wird.
lilo ja, deswegen ist dort ja stets neuschreiben angesagt.
boot.ini nein. Die boot.ini kann ich mit einem beliebigen Editor ändern. Den Bootsektor kopiere ich wie jede andere Datei. Woher soll in diesem Fall Windows NT/2000/XP/2003 wissen, dass es den Bootblock neu zu schreiben hätte. Ich kann sogar ein Linux von CD starten (z.B. Knoppix), die boot.ini editieren, eine Datei linux.bin (oder wie auch immer) ins Wurzelverzeichnis kopieren und anschließend booten, es geht.
Statt dessen generiert der Bootloader-Schreiber aus den Konfigurationsdateien festverdrahtete Bootblöcke, die dann in die Bootsektoren geschrieben werden.
Ich weiss ja nicht, was Du Dir vorstellst, wieviel Platz in einem Bootblock ist bzw. wieviel man in wenigen KByte Assembler ausdrücken kann; ich bin mir aber zu 99.9% sicher, dass das Lesen verschiedener Dateisysteme auf gar keinen Fall drin ist.
Im Fall von NT/2000/XP/2003: (Quelle: Microsoft Windows XP Professional - Original Microsoft Training, leicht gekürzt)
Der Bootsektor wird derart modifiziert, dass beim Systemstart der Betriebssystemlader NTLDR geladen und initialisiert wird.
NTLDR schaltet den Mikroprozessor vom Real Mode in den Protected Mode und startet die minimal erforderlichen Dateisystemtreiber. Diese sind in NTLDR integriert.
Anschließend liest NTLDR die Datei boot.ini ein (ganz normal über das Dateisystem)...
Zum Problem Bootblock noch ein kleiner Auszug aus "Windows NT Workstation - Die technische Referenz", Microsoft Press
<zitat>
Wurde die Festplatte als Startlaufwerk ermittelt, liest das System-BIOS den Master Boot Record und lädt ihn in den Hauptspeicher. Das System-BIOS übergibt dann die Ausführung an den Master Boot Record Der hier enthaltene Code durchsucht die Partitionstabelle nach der Systempartition. Wenn der Master Boot Record die Systempartition gefunden hat, lädt er Sektor 0 der Partition in den Hauptspeicher und führt ihn aus. Sektor 0 auf der Systempartition kann ein Hilfs- oder Diagnoseprogramm darstellen oder eine Boot-Datei, die den Startcode für ein Betriebssystem enthält. Der Code in der Boot-Datei startet das Betriebssystem in der durch das betreffende Betriebssystem vorgegebenen Art und Weise.
[...]
Der Master Boot Record ist im allgemeinen unabhängig vom Betriebssystem. Beispielsweise verwendet man auf x86-Computern denselben Master Boot Record zum Starten von Windows NT, Windows 95, MS-DOS [...]
Dagegen ist die Boot-Datei sowohl vom Betriebssystem als auch vom Dateisystem abhängig. Auf x86-Computern ist die Boot-Datei von Windows NT für folgende Punkte verantwortlich:
-
Suchen der Datei NTLDR im Stammordner. Dazu müssen in der Boot-Datei grundlegende Informationen zum verwendeten Dateisystem vorhanden sein. Auf einem FAT-Datenträger weist die Boot-Datei in der Regel eine Länge von einem Sektor auf. Bei NTFS-Datenträgern kann sie bis zu 16 Sektoren lang sein, wobei die zusätzlichen Sektoren genügend Code des Dateisystems enthalten, um NTLDR zu finden.
-
Laden des Bootloaders - NTLDR - in den Hauptspeicher
-
Beginn der Ausführung des Bootloaders
</zitat>
Sicherlich ist es eine große Leistung, diese Aufgaben in diesem geringen Speicherplatz zu realisieren. Aber es geht offensichtlich - und Du siehst, dass das Lesen _verschiedener_ Dateisysteme offenbar _nicht_ erforderlich ist, d.h. Deine Vermutung stimmt (nicht nur zu 99,9%), die Folgerung die Du daraus ziehst nicht.
Freundliche Grüsse,
Vinzenz