| Zeile 11: | Zeile 11: | ||
Auch in Assembler sollte man sauber programmieren und nicht scheuen, Strunkturen und Variablen statt Offset-Konstanten zu verwenden, | Auch in Assembler sollte man sauber programmieren und nicht scheuen, Strunkturen und Variablen statt Offset-Konstanten zu verwenden, | ||
besonders beim [[Boot-Parameter-Block]]. | besonders beim [[Boot-Parameter-Block]]. | ||
| + | |||
| + | ==Allgemeines== | ||
| + | Der [[Bootprozess]] wird ja bereits an anderer Stelle beschrieben, jedoch wird dort nicht näher ins Detail gegangen. Dies wird nun an dieser Stelle nun nachgeholt. | ||
| + | Ausgangspunkt ist, dass das [[BIOS]] bereits den ersten Sektor von unserem Datenträger geladen hat und nach einer Überprüfung der Signatur die Kontrolle an diesem abgibt. Man beachte, das der erste Sektor bei Festplatten für gewöhnlich der [[Master Boot Record]] ist und auf dem ebenfalls eingegangen wird, bzw. die Vorgehensweise erläutert. | ||
| + | |||
| + | Die Falle in der man tappen wird, wenn man wild drauf los programmiert, dass der Binärcode des Bootsektors die 512-Byte-Grenze überschreiten wird. OK, zugegeben, bei der CD mit ihren 2048 Bytes pro Sektor und deren Dateisystem langt dieser. Auch zukünftige Festplatten mit einer physikalischen Sektorgröße von 4096 Bytes mögen dem entgegen wirken. Unser Ziel ist aber keineswegs für jedes Dateisystem einen eigenen Bootloader (ausschließlich dem Bootsektor) zu entwickeln, sondern viel mehr ein universelles Modell auf die Beine zu stellen, bei dem nur der Bootsektor individuell dem Dateisystem vorliegt und der Bootloader (Binärdatei) für alle unterstützten Dateisystemen gleich bleibt. | ||
| + | |||
| + | |||
| + | {{Hinweis|Text=Der folgende Text enthält noch den ursprünglichen Artikel.}} | ||
==Tools== | ==Tools== | ||
Das brauchen wir um unser erstes Programm zu realisieren: Einen Editor, einen Assembler, ein paar Konsolentools und eine Testumgebung. | Das brauchen wir um unser erstes Programm zu realisieren: Einen Editor, einen Assembler, ein paar Konsolentools und eine Testumgebung. | ||